[Linux] Linux 基础命令 (持续更新)

Linux介绍

在介绍Linux命令之前,先简单了解下操作系统的作用,操作系统是应用程序与硬件之间插入的一层软件,所有应用对硬件的操作都必须经过操作系统。操作系统的两个最主要的作用是

  • 防止硬件被失控的应用程序滥用
  • 向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备

目录结构介绍

目录 用途
/bin 这个目录是系统中最主要的可执行文件的存放位置,这些可执行文件大都是Linux系统中最常用的命令。
/boot 这个目录是存放系统启动时的内核文件和其他一些信息文件。
/dev 这个目录中的所有文件都是特殊文件,Linux系统把所有的外设备都看成是一个文件。
/home 这是系统缺省普通用户的主目录的根目录,一般与系统关系十分密切的配置文件都放在该目录下。
/initrd 使用RAMDisk方式启动时用于挂载RAM设备文件。
/lib 这个目录是存放系统的链接库文件。
/lost+found 这个目录是文件系统恢复时使用。
/misc 这个目录是备用目录。
/mnt 这是系统提供安装额外文件系统时候的安装目录,如挂载软驱、光驱等。
/opt 用于安装一些给所有用户使用的文件或程序。
/proc 该目录的文件系统叫做porc文件系统,是系统内核的映像,该目录的文件存放在内存中。
/root 超级用户root的缺省目录,对一般用户来说,是没有对该目录写入权限的。
/sbin 与/bin一样,主要是存放可执行文件,只不过这里的可执行文件主要是给超用户管理系统时使用的,普通用户几乎没有权限执行其中的程序。

文件分类

Linux系统中,一切皆文件,对数据文件(.mp3,.bmp),程序文件(.c,.o,*.h),设备文件(LED,触摸屏,鼠标),网络文件(socket)等的管理都抽象为文件,使用统一的方式进行管理。

Linux中将文件主要分为以下几类

  • 普通文件
    普通文件在系统中是用一横杠来表示的”-“,是操作系统用来存放数据,程序等信息的文件。一般都长期地保存在外部存储器中,例如硬盘中。普通文件一般包含文本文件,数据文件,可执行的二进制程序文件等。(可以使用 file 命令来查看文件类型,file 后接文件名可以查看相应文件的文件类型,如果file 命令后直接加“通配符”,则可以查看当前目录下的所有文件的类型。)

  • 目录文件
    Linux中的目录文件用”d“来表示,是一种特殊的文件,用于构建文件系统的树形结构。而且目录文件只允许系统管理员对其进行修改,普通用户只能对其进行访问,不允许修改。每个目录至少包含两个条目,一个是“.“,表示当前目录,一个是”…“,表示上级目录。

  • 设备文件
    Linux把所有的设备都抽象为文件,用”c“表示字符设备(char),用”b“表示块设备(block),它是用于向IO设备提供连接的一种文件,文件均存放在 /dev 目录下。

  • 管道文件
    管道文件是Linux中特殊文件,基本上用于进程间通信。

  • 链接文件
    链接文件在Linux中用”l“表示,类似于Windows下的快捷方式,分为软链接与硬链接。

文件权限

Linux中用户分为三类

  • 所有者 owner
  • 相同组用户 group user
  • 其他用户 other user

系统对上述三类用户于一个文件定义了读,写,执行三种权限,分别为 r,w,x。文件权限
上图中,- 表示该文件为普通文件,第一组rwx表示当前用户拥有读写执行权力,第二组rwx表示当前组用户也拥有读写执行权力,第三组rwx表示其他用户拥有读写执行权力,即所有用户对此文件均有读写执行权限。

命令总结分类

对于软件开发人员来说,只需要掌握基础的Linux的命令即可应付绝大部分的Linux环境下开发工作了。

  • 文件管理
  • 运行程序
  • 关机与重启
  • 用户管理
  • 安装软件

1. 文件管理

切换工作目录 cd

Linux中所有目录名和文件名对大小写敏感。

cd命令后可以跟相对路径,也可以跟绝对路径。如果省略路径参数,则切换到当前用户的主目录(home目录)。

cd命令 切换到的目录
cd 切换到当前用户的主目录,也就是登录系统时所进入的目录
cd ~ 切换到当前用户的主目录,也就是登录系统时所进入的目录(同上)
cd . 切换到当前目录
cd … 切换到当前目录的上一级目录
cd - 切换到上一次进入的目录
查看目录 ls

ls命令是list的缩写,类似于Dos系统下的dir命令,Linux系统允许最长255个字符,在 /usr/include/linux/limits.h 有定义。

#define NAME_MAX         255 			//usr/include/linux/limits.h

ls命令默认情况下会列出当前目录下所有文件以及目录的名称。可以附加以下参数增加显示的内容

参数 作用
-a 显示指定目录下所有子目录及文件,包括隐藏文件
-l 以列表的形式显示详细信息
-h 配合-l参数,以人性化的方式显示文件的大小

[Linux] Linux 基础命令 (持续更新)_第1张图片
显示出来的内容分别为

  • 文件类型+文件权限
  • 硬链接个数,默认是从1开始,目录文件默认是2
  • 文件所有者
  • 文件所有组
  • 文件大小(由于使用-h属性,现在以更易阅读的附加了 K,M等单位的形式表示)
  • 最后修改时间(如果是新文件,则为文件创建的时间)
  • 文件名

在文件数量非常大的时候,可以使用通配符只显示特定的文件

通配符 含义
* 匹配文件名中所有字符
ls te* 显示当前目录下所有以 te 为开头的文件
ls *html 显示当前目录下所有以html结尾的文件
? 匹配文件名中的任意一字符
ls ?.c 匹配任意以.c且前面有且仅有一个字符的文件
ls c.? 匹配以c.打头,后缀有且仅有一个字符的文件
[] 将字符括起来,表示匹配其中的任意一个字符
[abc] 匹配a,b,c中的任意一个字符
[a-f] 匹配a到f中的任意一个字符
ls [a-f]* 列出以a到f中任意一个字母开头的文件
\ 如果要把通配符作为普通字符使用,可以在其前面加上转义字符\来取消对通配符的解析
  • 但是当?和*位于方括号之内时,自动失去通配符的作用
创建目录 mkdir

mkdir命令可以创建一个目录,使用-p参数可以递归创建目录。但是创建的目录不能与欲创建目录下所存在的目录同名,而且创建者必须对创建目录所在的父目录具有写权限。

删除目录 rmdir

rmdir命令可以删除一个目录,但不加参数的话仅仅只可以删除一个空目录,加上-r参数后可以删除一个非空目录。Linux下删除文件后无法复原。

删除 rm

rm命令后接文件名,可将指定文件删除,删除后不可恢复。后接 -i 参数可以进行提示后删除。

创建文件 touch

使用touch命令可以创建一个空文件,如果文件不存在,则touch的时候就是文件创建的时间,如果文件已经存在,touch一个文件则更新文件的创建时间。

拷贝文件 cp

cp命令是copy的缩写,用于将给出的文件或者目录拷贝到指定的目录。

参数 作用
-a 该选项一般在复制目录的时候使用,它保留链接文件属性,并递归地复制目录,简单说就是复制目录所有属性
-f 删除已经存在的目标文件而不提示
-i 交互式复制,复制之前会进行询问
-r 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标路径必须是一个目录名
-v 显示拷贝进度,每拷贝一个文件均会打印出记录
移动文件(重命名文件) mv

mv命令可以将文件和目录进行移动,或者重命名。

参数 作用
-f 禁止交互式操作,如有覆盖也不给予提示
-i 确认交互式操作,如果mv操作会导致已存在的文件被覆盖,系统会提示是否重写,要求用户回答误以免覆盖文件
-v 显示移动进度,打印移动的记录
查找文件 find

find命令用于在特定的目录下查询符合条件的文件,也可以用来搜索特定属主的文件。

命令 含义
find ./ -name test.txt 查找当前目录下名为 test.txt的文件
find ./ -name *.sh 查找当前目录下后缀为.sh的文件
find ./ [A-Z]* 查找当前目录下以大写字母开头的文件
find ./tmp -size 2M 查找tmp目录下大小正好等于2M的文件
find ./tmp -size +2M 查找tmp目录下大小大于2M的文件
find ./tmp -size -2M 查找tmp目录下大小小于2M的文件
find ./tmp +4k -size -5M 查找tmp目录下大小大于4k,且小于5M的文件(k小写,M大写)
find ./tmp -perm 0777 查找tmp目录下权限为777的文件或者目录
打印文件到命令行 cat

cat

压缩 ,解压缩文件

归档管理 tar是Linux最常用的备份工具。它可以将一系列文件归档到一个大文件中,也可以将档案解开以恢复数据。tar只负责打包,解包,并不做压缩,当文件的大小较小的时候,打包出来的文件可以大小超过之前所有文件的总和。

打包:tar -cvf xxx.tar 打包进档案的文件
解包:tar -xvf xxx.tar -C 解包档案的路径
  • 参数的前面可以加 - ,也可以不加 - 。

归档以后,可以使用gzip或者bzip2来进行压缩。只需要添加一个参数即可

使用gzip压缩与解压缩

压缩:tar -czvf xxx.tar 欲压缩文件
解压缩:tar -xzvf xxx.tar -C 解压缩的路径

使用bzip2压缩与解压缩

压缩:tar -cjvf xxx.tar 欲压缩文件
解压缩:tar -xjvf xxx.tar -C 解压缩的路径

也有单纯的压缩解压缩

zip -r 压缩包文件 加入压缩包的文件
unzip -d 解压路径 压缩包文件
改变文件权限 chmod

chmod

文件权限 说明
x 执行权限,没有此权限的话,将无法执行程序,如果是文件夹的话,将无法进入
r 读权限,没有此权限的话,文件将无法打开查看,如果是文件夹的话,将无法查看文件夹的内容
w 写权限,没有此权限的话,文件将无法被修改或删除,文件夹是同样的

一般常用是数字修改法 r为4,w为2,x为1,所以设置一个文件具备有读写执行的权限的话 可以这么写

chmod 777 filename 

chown可以修改文件的所有者

chown 文件新属有者 文件名
搜索文件 grep

grep允许对文本文件进行模式查找。如果找到匹配模式,grep将打印包含匹配模式的所有行。
使用方法

grep 查询词 查询文件名 -n 

(最后的 -n是显示查找到的行的行号)查询的词如果包括空格的话需要用引号引起来,grep命令的查询词部分也可插入正则表达式。

其他一些参数

参数 作用
-v 显示不包含查询词的所有行,相当于原命令的取反
-n 显示匹配行的行号
-i 忽略大小写
显示文件 less / more

如果不打算编辑文件,仅仅知识查看文件内容时,可以使用cat来读取文件,如果文件内容太多,会使得文件内容一下子滚屏而过,不方便阅读,则可以使用less 或者more 命令来实现内容的分屏显示。
两者的区别:

  • less 可以使用方向键来控制阅读区域而more不可以
  • less 在关闭文件不会留下文件的内容,而more会留下
  • less 不必读整个文件,加载速度会比more更快
文件链接(软链接+硬链接)

软连接即快捷方式,里面存放的是源文件的地址,通过软连接改变文件内容,源文件内容会随之改变,当源文件被删除的时候,软链接文件即失效,再也无法通过软链接去访问源文件了。

创建方式

ln -s 源文件 链接文件

硬链接为文件的另一个入口,可以建立多个硬链接,目录文件不允许建立硬链接,修改任意一个硬链接都会修改源文件内容,但是删除任意硬链接并不会删除源文件,即使把源文件删除也不会导致文件被删除,相当于对源文件做了一个备份,但此备份并不是我们通常理解的那个备份,它的内容也是会随着任意一个硬链接的修改而发生改变,只是删除的时候,需要所有的硬链接全部被删除后,文件才能真正被删除。

创建方式

ln 源文件 链接文件

2. 运行程序

./ filename 然后ctrl + C退出

3. 用户管理

useradd, userdel

useradd命令用来添加系统用户

useradd [参数] 用户名
参数 含义
-d 目录名 指定用户登录系统时的主目录,如果不使用此参数的话,系统将自动在home目录下创建一个与用户名同名的目录作为用户的主目录
-g 指定组名称

作为管理员(不是管理员,没有权限)如果想删除一个用户,则可以使用 userdel 命令。

userdel -r 用户名 

命令中添加了 -r 参数,指明删除用户的同时,将用户的家目录也同时予以删除。

passwd

在文件 /etc/passwd中,保存着系统中所有的用户和用户的主要信息,以下面的形式列出

starxiang:x:1000:1000:starxiang:/home/starxiang:/bin/bash

含义分别为(用冒号隔开):

  • 第一个:用户名,在Linux中,用户名只是用于便于使用者记忆地区分用户,而系统本身是靠用户id来进行用户区别
  • 第二个:x代表密码标志,但其并不是真正地密码,真正的密码是保存在 /etc/shadow 文件中的。
  • 第三个:用户ID,系统是通过 UID 来识别不同的用户和分配用户权限的,其中root用户的UID为0,1~499:系统用户(伪用户)UID,既然是系统伪用户,即这些用户是不能用来登录系统的,只是用来运行系统服务的。(其中,1-99号是预留给系统自动创建的,100-499为分配给用户创建的)从500开始,到65535为普通用户ID。
  • 第四个:用户组ID
  • 第五个:用户的简单说明(一般不写,或者初始用户即默认设置为用户名)
  • 第六个:用户的家目录地址。
  • 第七个:用户登录后默认使用的shell程序
last

last可以查看用户的登录记录

4. 安装软件

下载文件 wget
安装程序 apt-get

5. 其他系统命令

关机
shutdown -h now
重启系统
reboot
重定向 >

将命令的执行结果重定向到一个文件,本应该在终端显示的结果保存在文件中。

ls > test.txt

则 ls的输出结果将写入到test.txt文件中,如果test.txt文件本身已经存在,则文件原有内容将会被覆盖掉。

管道 |

一个命令的输出可以通过管道作为另一个命令的输入。
例如:

ls -ahl | more

则将ls执行的结果作为输入传递给more命令,然后more命令会对ls的结果执行分屏显示。

清屏clear

清除终端上的显示内容,命令行移到最上端。(相当于Dos系统中的cls命令)也可以使用快捷键 Ctrl + l来实现相同功能。

pwd

显示当前的工作目录

which

查看命令存在的目录

which 命令名称
whoami 和 who

该命令可以让用户查看当前系统当前账户的用户名,可通过 cat /etc/passwd 来查看系统用户信息,也可以通过执行who命令来看登录的历史记录。

exit

退出终端,退回到上一个登录账号

su

可以通过su命令切换用户,su后面可以加 - ,su和su - 的区别在于 su - 切换到对应的用户时会将当前的工作目录自动转换切换后的用户主目录(su - 会切换工作目录)

su的一些用法

命令 含义
su 切换到root用户
su root 切换到root用户
su - 切换到root用户,同时切换目录到 /root
su - root 切换到root用户,同时切换目录到 /root
su 普通用户 切换到普通用户
su - 普通用户 切换到普通用户,同时切换到普通用户所在的主目录
file

Linux系统中,不是根据文件后缀名来区分文件类型的,使用file加文件名可以打印出文件类型。

ps

top
kill
&
jobs
fg
df
history
ifconfig
ping-

其他命令

查看主机CPU信息

more  /proc/cpuinfo

查看主机PCI信息

lspci

查看当前的Linux操作系统所使用的内核模块

more  /prco/modules

查看shell环境变量

ECHO $SHELL 

time
date
cal\bc
du
dmesg
uptime
who/w
whoami/hostname
top
free

你可能感兴趣的:(Linux)