Ø 简介
本文主要记录 Linux 中的常用命令,包括如下内容:
1. 文件处理命令
2. 权限管理命令
3. 文件搜索命令
4. 字符串处理命令
5. 帮助命令
6. 压缩解压命令
7. 网络通信命令
8. 其他命令
Ø 预备知识
在 Linux 中,文件没有后缀名,只要是可执行文件
1. 文件命名规则
1) 在 Linux 中文件名严格区分大小写;
2) 除了"/"之外,所有的字符都是合法的;
3) 有些字符最好不要用,如:空格符、制表符、退格符和字符@#$%等;
4) 避免使用"."作为普通文件名的第一个字符,因为以"."为第一个字符的文件名,在 Linux 中是作为隐藏文件的。
2. 命令格式
命令格式:命令 [-选项] [参数]
例如:# ls 或者 # ls -l 或者 # ls -l /etc
说明:
1. 执行一个命令,实际是在执行一个程序;
2. 选项当有多个选项时,可以写在一起;
3. 由于命令选项可能比较多,不必记住所有选项,可现用现查。
4. 命令目录说明
/sbin 或 /usr/sbin #root 用户执行的命令
/bin 或 usr/bin #all users 所有用户都能执行的命令
1) bin: 表示 binary(二进制);
2) usr: 表示 user(用户);
3) sbin: 表示 super(超级、超人)
5. 目录符号
./file1 # ./ 表示当前目录下的 file1
../file2 # ../ 表示上级目录下的 file2
~/file3 # ~/ 表示宿主目录下的 file3
/fiel4 # / 表示跟目录下的 file4
/bak//etc.20200411.tar.gz #多个"/"也只会认为是一个目录
6. 通配符
1) * 匹配多个任意字符或表示所有,例如:
# ls /etc/*.conf #查找 etc 目录下以 .conf 结尾的文件或目录
# rm -rf * /dir4 #表示删除 dir4 目录下的所有文件和目录
2) ? 匹配任何单个字符
# ls /etc/???.conf #查找 etc 目录下前面为3个字符,并且以 .conf 结尾的文件或目录
3) [] 匹配任何包含在括号中的单个字符
# rm -rf dir[134] #表示删除 dir1 dir3 dir4 目录
1. 文件处理命令
1) ls(list)
功能描述 | 查看目录中文件 |
语法 | ls [选项] [文件或目录] -a(all) 显示所有文件,包括隐藏文件 -l(long) 显示详细信息 -h与 -l 选项一起使用,输出文件大小(如:1K、22M) -L 查看软链接目录中的文件 -d(directory) 查看当前目录详细信息 -R 如果存在目录,一并递归显示目录中的文件列表 -i(inode) 查看文件的 i 节点(数字标识),每个文件或目录必须有一个 I 节点,一个 I 节点就是一个数字,是系统标识文件或目录的内部标识。 |
执行权限 | 所有用户 |
命令所在路径 | /usr/bin/ls |
示例:
# ls #查看当前目录中的文件
# ls /root #查看指定目录中的文件,/表示根目录
# ls ../ #查看上级目录中的文件列表
# ls -l /etc/virc /etc/vimrc #同时查看多个文件的详细信息
# ls -lL /sbin #查看软链接目录中的文件(/sbin 为软链接)
# ls -lhR /learn #递归查看 learn 目录中子目录的文件列表
# ls /etc/*.conf #查找 etc 目录下以 .conf 结尾的文件或目录
n 目录和文件详细信息解释,例如:
drwxr-xr-x. 20 root root 3340 1月 9 19:27 dev
drwxr-xr-x | 第1个字符 d 表示文件类型,常见的文件类型有: l d 目录(directory) l - 二进制文件,在 Linux 中二进制文件是非常常见的 l l 软链接文件(link)
后面9个字符表示三类不同用户的对该文件的权限,权限分别为:r 读(read)、w 写(write)、x 执行(execute) l rwx 所有者的权限,使用 u(user 或 owner)表示; l r-x 所属组的权限,使用 g(group)表示; l r-x 其他人的权限,使用 o(others)表示。 |
20 | 硬链接数 |
root | 所有者 |
root | 所属组 |
3340 | 文件大小,不是准确的计算目录中所有文件的大小,只是包含目录和子目录中的大小。在 Linux 中数据块(block)是最小存储的单位,默认为512个字节,可以调整数据块的大小。 |
1月 9 19:27 | 文件的创建时间或最后的修改时间 |
dev | 文件或目录的名称 |
2) tree
功能描述 | 以树状结构,列出指定目录的所有文件及目录 |
语法 | tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...] -a 列出所有文件和目录(默认选项) -C在文件和目录清单添加颜色,便于区分各种类型 -D 列出文件和目录修改时间 -p 列出权限标识 |
说明:在 CentOS 7.6 默认没有安装 tree 软件包
# tree /learn
bash: tree: 未找到命令...
# yum -y install tree #使用 yum 按下即可
示例:
# tree -a /learn #列出所有文件和目录
3) cd(change directory)
功能描述 | 切换目录 |
语法 | cd [目录] |
示例:
# cd / #切换到根目录
# cd ~ 或 # cd #切换到当前用户的宿主目录
# cd .. #切换到上级目录
# cd /etc/abrt #切换到指定目录
# cd !$ #却换到上一次使用的目录
4) pwd(print working directory)
功能描述 | 显示当前所在的工作目录 |
语法 | pwd |
示例:
[root@localhost abrt]# pwd
/etc/abrt
5) mkdir(make directories)
功能描述 | 创建新目录 |
语法 | mkdir [选项] [目录名] -p 父目录不存在则创建,通常用于一次创建多层目录;但如果不加 -p 选项时,会报错 |
示例:
# mkdir learn #在当前目录下创建目录
# mkdir /learn1 #或者在指定目录下创建
# ls -ld /learn #查看目录详细信息
drwxr-xr-x. 2 root root 6 1月 9 21:19 /learn
# mkdir -p ./dir1/dir2/dir3 #同时创建多层目录
# mkdir /web /bak #同时创建 web、bak 目录
注意:同一目录下不能存相同的文件名和目录名。
6) touch
功能描述 | 创建空文件(二进制文件) |
语法 | touch [文件名] |
示例:
# touch learn #创建文件(默认权限为644)
# touch "a b" #创建文件名为 a b 的文件
# touch -- -abc #创建文件名为 -abc 的文件
# touch ./dir1/file1 ; echo content1 >> ./dir1/file1 #创建文件并在文件中追加内容
7) rm(remove)
功能描述 | 删除文件或目录 删除目录还可以使用 rmdir 命令,例如:# rmdir dir1 |
语法 | rm [-rf] [文件或目录] -r 删除目录 -f 是否删除确认,f 表示不确认 |
示例:
# rm yum.conf #删除文件
# rm -rf xdg #删除目录,并取消提示
# rm -f "a b" #删除文件名为 a b 的文件
# m -- -abc #删除文件名为 -abc 的文件
# rm -rf /web /bak #同时删除 web、bak 目录
# rm -rf /learn/* #删除 /learn 目录下的所有文件及目录
或者
# rm -rf * /learn #删除 /learn 目录下的所有文件及目录
8) cp(copy)
功能描述 | 复制文件或目录 |
语法 | cp [-rpf] [源文件或目录] [目标目录] -r 复制目录 -R递归地复制目录 -f 覆盖已经存在的目标文件而不给出提示 -p 拷贝文件,保存文件属性与源文件相同 -u如果存在的目的地有相同的,或者更新的修改时间,不复制非目录(文件). |
示例:
[root@localhost learn]# cp /etc/yum.conf /etc/virc /learn #复制 yum.conf 和 virc 文件到 learn 目录下
[root@localhost learn]# cp -r /etc/yum /etc/xml /learn #复制 yum和 xml 目录到 learn 目录下
[root@localhost learn]# ls
virc xml yum yum.conf
[root@localhost skel]# cp -rf . /home/user2 #拷贝当前目录的所有文件到指定目录
注意:复制目录时必须指定 -r 选项。
[root@localhost etc]# cp -r /etc/skel/. /home/buser1 #拷贝 skel 目录下的所有文件到指定目录
9) mv(move)
功能描述 | 移动文件或目录,或者更改文件名或目录名 |
语法 | mv [选项] [源文件或目录] [目标文件或目录] -f 覆盖目标文件或目录不给任何提示 |
示例:
[root@localhost learn]# mv /learn/virc /learn/yum #移动文件
[root@localhost learn]# mv /learn/yum/virc /learn/abc.test #移动文件并改名
[root@localhost learn]# mv xml yum/testxml #移动目录并改名
10) cat(concatenate and display files)
功能描述 | 查看文件的内容 |
语法 | cat [文件名] |
示例:
[root@localhost yum]# cat version-groups.conf #查看当前目录下的文件
[root@localhost yum]# cat /etc/issue #查看指定目录下的文件
注意:当文件内容比较多时,cat 不能显示文件所有内容,这时可以使用 more 命令。
11) more
功能描述 | 分页显示文件内容 |
语法 | more [文件名] f键或空格: 显示下一页 b键: 返回上一页 enter(回车): 显示上一行 q键: 退出 |
示例:
[root@localhost yum]# more /etc/services
12) head
功能描述 | 查看文件的前几行 |
语法 | head -num [文件名] -num 显示文件的最后 num 行,默认为10行 |
示例:
# head -5 /etc/services #查看文件前5行
13) tail
功能描述 | 查看文件的最后几行 |
语法 | tail -num [文件名] -num 显示文件的前 num 行,默认为10行 -f 动态显示文件内容 |
示例:
# tail -10f /learn/file1 #监视 file1 文件的信息(当文件内容发生改变时,会自动刷新)
注意:这一功能通常可以用于监视文件日志。
14) ln(link)
功能描述 | 创建链接文件 |
语法 | ln -s [源文件] [目标文件] -s 创建软链接 |
示例:
1. 创建软链接
# ln -s /learn/file1 dir1/file1.s #注意:需要使用绝对路径
# ls -l dir1/file1.s file1
lrwxrwxrwx. 1 root root 12 1月 12 15:27 dir1/file1.s -> /learn/file1
-rw-r--r--. 1 root root 17 1月 12 15:19 file1
# ls -i file1 dir1/file1.s #查看I节点
33624865 dir1/file1.s 1668263 file1 #i节点不同
软链接的特点:
1) 软链接的文件类型以 l 表示;
2) 所有用户都具有 rwx 的权限,但是这并不代表对源文件也具有这些权限,具体的权限任然要看用户对源文件的权限;
3) 大小比较小,只是一个文件的符号链接;
4) 日期为创建软链接的日期,与源文件不一样;
5) 软链接有一个 ->,表示指向的源文件;
6) 软链接类似于 Windows 中的快捷方式。
2. 创建硬链接
# ln file1 dir2/file1.h
# ls -l file1 dir2/file1.h
-rw-r--r--. 2 root root 17 1月 12 15:19 dir2/file1.h
-rw-r--r--. 2 root root 17 1月 12 15:19 file1
# ls -i file1 dir2/file1.h #查看I节点
1668263 dir2/file1.h 1668263 file1 #i节点相同
硬链接的特点:
1) 硬链接的所有属性与源文件完全相同,如权限、内容、大小、日期等;
2) 硬链接就类似于拷贝,cp -p + 同步更新;
3) 硬链接是同步更新的,任何一个硬链接文件改变,其他文件都会随之改变;
3. 软链接与硬链接的区别
1) 创建软链接需要指明源文件的绝对路径,而硬链接只需要指明相对路径;
2) 如果源文件删除,软链接也不能被访问了,而硬链接则不影响;
3) 软链接与源文件不属于同一个 I 节点,而硬链接与源文件属于同一个 I 节点,所以它们能同步更新;
4) 软件链接是引用源文件的路径,所以当源文件被删除后,如果之后再在原来的路径下创建相同的文件,软链接又可以被访问了;而硬链接则引用的是 I 节点,新创建的文件是另一个 I 节点,所以不能同步更新了。
5) 软链接可以跨文件系统(分区),而硬链接不可以;
15) wc
功能描述 | 用于计算文件的 Byte 数、行数、字数等 |
语法 | wc [-clw] [文件] -c 只显示 bytes 数 -l 只显示行数 -w 只显示字数 |
示例:
[root@localhost ~]# wc -l /etc/passwd
45 /etc/passwd #表示该文件中有45行
16) file
功能描述 | 用于判断任何一个文件的文件类型 |
语法 | file [选项] [文件] |
示例:
# file file1 #判断 file1 文件的类型
17) awk
功能描述 | AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。 说明:与该命令类似的还有一个 sed。 |
语法 | awk [选项参数] 'script' var=value file(s) -F 指定输入文件的分隔符(如F:),默认为空格(空格不能指定 -F,因为默认就为空格) |
示例:
查找 UID 为0的用户名:
# awk -F: '$3==0 {print $1}' /etc/passwd
查找密码为空的用户:
# awk -F: 'length($2)==0 {print $1}' /etc/shadow
查找 systemd 进程的 PID,注意字符串比较需要加双引号(""):
# ps -le | grep system$ | awk '$14=="systemd" {print $4}'
查找第一列和最后一列
# ls -l | awk '{print $2,$NF}'
查找指定行中的指定的列,并转为 int 类型
# df | awk 'NR==2{print int($5)}' #输出:15
18) cut
功能描述 | 在文件的每一行中提取片断 |
语法 | cut [OPTION]... [FILE]... -c以字符为单位进行分割; -d自定义分隔符,默认为制表符; -f与 -d 一起使用,指定显示哪个区域 |
示例:
# head -n 1 /etc/passwd | cut -d ":" -f 1
说明:根据":"进行分割,提取用户名,很类似 awk 的功能
2. 权限管理命令
1) chmod(change the permissions mode of a file)
功能描述 | 改变文件或目录权限 |
语法 | chmod [-R] [{ugo}{+-=}{rwxs}] [文件或目录] -R 同时改变子目录和文件的权限 u 所有者,+ 授予权限,r 可读权限,s(SetUID=4) g 所属组,- 撤销权限,w 可写权限,s(SetGID=2) o 其他人,= 赋予权限,x 可执行权限,t(粘着位=1) a 所有人(所有者、所属组、所有人) [mode=421] [文件或目录] |
SetUID:当一个可执行程序具有 SetUID 权限时,用户执行这个程序时,将以这个程序所有者的身份执行。
SetGID:当一个可执行程序具有 SetGID 权限时,用户执行这个程序时,将以这个程序所属组的身份执行。
粘着位/粘滞位(Sticky bit):如果一个权限为777的目录具有粘着位,那么每个用户都可以在这个目录下创建文件,但是只能删除所有者是自己的文件(自己创建的文件),不能删除其他人的文件(比如临时文件的应用)。
$ ls -ld /tmp
drwxrwxrwt. 42 root root 4096 3月 22 20:15 /tmp
示例:
1. 使用 rwxst 方式授权
# chmod u+x file2 #授予所有者可执行权限
# chmod g+w,o+x file2 #同时授予多个权限
# chmod g-r file2 #撤销所属组读取权限
# chmod o=rwx file2 #授予其他人可读、可写、可执行权限
# chmod a+x file2 #授予所有人、所属组、其他人可执行权限
# chmod u+s /bin/touch #授予 SetUID
# chmod g+s /bin/touch #授予 SetGID
# chmod o+t dir1 #授予粘着位
2. 使用数字(mode=[4|2|1]421)方式授权(推荐)
r=4 w=2 x=1,表示权限例如:
rwxr-xr--,为754,其中:所有者为7,所属组为5,其他人为4;
rw-r-x—x,为651,其中:所有者为6,所属组为5,所有人为1;
通过数字转为字母,可以包含的数字:7、6、5、4、3、2、1、0,例如:
751 -> rwxr-x-x 345 -> -wxr—r-x 527 -> r-x-w-rwx
306 -> -wx---rw- 612 -> rw---x-w- 316 -> -wx—xrw-
# chmod 651 file1
# ls -l file1
-rw-r-x--x. 2 root root 21 1月 12 16:23 file1
SetUID(mode=4),使用数字授予 SetUID:
# chmod 4755 /bin/touch
# ls -l /bin/touch
-rwsr-xr-x. 1 root root 62568 10月 31 2018 /bin/touch
此时,所有者的执行权限就为 s(SetUID)了。
# chmod 4655 file1 #逻辑上应该是一个可执行文件,才有意义
# ls -l file1
-rwSr-xr-x. 2 root root 49 3月 22 18:13 file1
注意:当一个文件没有 x 权限,而设置了 SetUID,S会显示为大写
SetGID(mode=2),使用数字授予 SetGID:
# chmod 2755 /bin/touch
# ls -l /bin/touch
-rwxr-sr-x. 1 root root 62568 10月 31 2018 /bin/touch
注意:同时授予 SetUID 和 SetGID 可以使用 6755.
粘着位/粘滞位(mode=1),使用数字授予粘着位:
# chmod 1777 dir1
3. 目录与文件权限总结
n 目录权限
权限 | 含义 | 代表性命令 |
r–读 | 可以列出目录中的文件列表 | ls |
w–写 | 可以在目录中创建、删除文件 | mkdir、touch、rm |
x–执行 | 可以进入目录 | cd |
n 文件权限
权限 | 含义 | 代表性命令 |
r–读 | 可以查看文件内容 | cat、more、head、tail |
w–写 | 可以修改文件内容 | echo、vi |
x–执行 | 可以执行文件 | 命令、脚本 |
2) chown(change file ownership)
功能描述 | 改变文件或目录的所有者 |
语法 | chown [-R] [用户] [文件或目录] -R 同时改变子目录和文件的所有者 |
示例:
# chown user1 dir4 #修改 dir4 目录的所有者为 user1
# chgrp buser2 ./ sh_auth #修改当前目录和 sh_auth 的所有者为 busr2
# chown -R buser1.mygroup1 file3 #同时改变所有者和所属组
3) chgrp(change file group ownership)
功能描述 | 改变文件或目录的所属组 |
语法 | chgrp [-R] [用户组] [文件或目录] -R 同时改变子目录和文件的所属组 |
示例:
# chgrp adm /learn/file1 #修改 file1 文件的所属组为 amd 系统组
# chgrp group5 ./ sh_auth #修改当前目录和 sh_auth 的所属组为group5
4) umask
功能描述 | 显示或设置文件和目录的缺省权限 |
语法 | umask [-S] -S 以 rwx 形式显示新建文件或目录缺省权限 注意:该设置仅在系统当前运行期间有效,重启后任然回到原始状态,如果需要永久生效,任然需要修改配置文件。 |
示例:
# umask #显示权限掩码值
0022
l 0 特殊权限位;
l 022 用户权限位(权限掩码值),实际的权限数字应改为:777 – 022 = 755
# ls -ld dir5
drwxr-xr-x. 2 root root 6 1月 12 21:19 dir5 #目录缺省权限为755
# ls -l dir5/file5
-rw-r--r--. 1 root root 0 1月 12 21:20 dir5/file5 #文件缺省权限为644
Linux 权限规则:缺省创建的文件不能授予可执行的 x 权限。
# umask -S #显示权限字母
u=rwx,g=rx,o=rx
# umask 027 #修改默认的缺省权限
注意:这里的指定的任然是权限掩码值,表示没有的权限,即777 – 750 = 027
# umask -S
u=rwx,g=rx,o=
3. 文件搜索命令
1) which
功能描述 | 查找系统命令所在目录 |
语法 | which [命令名称] |
示例:
# which ls
alias ls='ls --color=auto' #which 可以查看到命令的别名
/usr/bin/ls
2) whereis
功能描述 | 查找二进制文件、源代码文件、man 手册页,或帮助文件 |
语法 | whereis [options] [-BMS directory... -f] name... -b 只查找二进制文件; -m 只查找帮助文件; -s 只查找源代码文件 |
示例:
# whereis pwd #查找 pwd 命令的所文件
# whereis -m pwd #只查找 pwd 命令帮助文件
3) find
功能描述 | 查找文件或目录(比较复杂的命令) |
语法 | find [搜索路径] -name [搜索关键字] -name 根据文件名查找 -user 所有者 -uid 用户ID -group 组 -gid 组ID -inum i节点 -type 文件类型 -size 文件大小 -perm 文件权限 |
示例:
# find /learn #查看 learn 目录下的所有文件
# find /learn -name test1 #查找名称为 test1 的文件或目录
# find /learn -user user1 #查找所有者为 user1 的文件或目录
1. 使用通配符查找
# find /etc -name init* #查找以 init 为前缀的文件或目录
# find /etc -name *init* #查找包含 init 的文件或目录
# find /etc -name init??? #查找 init 后面为三位字符的文件或目录
/etc/inittab
# find ./ -name "su*" #注意:特殊情况可以加""进行搜索
2. 根据 i 节点查找
通常用于查找一些比较奇怪的文件名,例如:
# find . -inum 1668260 #注意:必须先查出i节点数字
./-abc
3. 根据文件类型查找
# find /etc -name init* -a -type f #查找二进制文件
文件类型:f 二进制文件,l 软链接文件,d 目录
4. 根据文件大小查找
# find / -size +204800 #查找大于100MB的文件或目录
注意:这里的大小是数据块的数量,通常一个数据块为512字节,换算公式:
1KB = (512字节 * 2) = 2block
100MB = 102400KB = 204800block
小于 –
大于 +
等于 find / -size 204800
5. 根据文件权限查找
# find / -perm -4000 -o -perm -2000 > /bak/set_uid_gid.list 2> /dev/null #将查找到所有设置了 SetUID 和 SetGID 的所有目录和文件
6. 根据文件的时间查找
1) 天 ctime、atime、mtime
2) 分钟 cmin、amin、mmin
c-change 改变,表示文件属性被修改过:所有者、所属组、权限等;
a-assess 访问,表示文件被浏览过:cat、more、vi等;
m-modify 修改,表示文件的内容被修改过:echo、vi等。
同样,可以使用:-、+、或者等于的时间范围来查找。
[root@localhost learn]# find /learn -mmin -60 #查找修改时间小于60分钟的文件和目录,注意:包含当前目录
/learn
/learn/file0103
7. 连接符
1) -a and 逻辑与
2) -o or 逻辑或
[root@localhost learn]# find /learn -size +163840 -a -size -204800 #在 /learn 下查找大于80M小于100MB的文件
[root@localhost learn]# find /etc -name act* -o -size +4096 #查找以 act 开头的或者大于2M的文件
8. 连接执行符
语法:find … -exec 命令 {} ;(固定写法)
{} find 查询的结果
转义符,命令将执行本身的含义
; 语句的结束
使用转义符的示例:[root@localhost learn]# m file01033 #使用命令本身的含义,即取消别名功能(不询问)
查找 inittab 文件,并执行 ls 命令:
# find /etc -name inittab -exec ls -l {} ;
-rw-r--r--. 1 root root 511 10月 31 2018 /etc/inittab
-exec 直接执行,不询问
# find /learn -name dir4 -exec rm -r {} ;
-ok 询问确认后,再执行相应命令
# find /learn -name dir4 -ok rm -r {} ;
4) locate(list files in databases)
功能描述 | 查找文件或目录(UNIX 中不支持) |
语法 | locate [搜索关键字] |
示例:
# locate file1 #查找文件名为 file1 的文件
/learn/file1
# locate /learn file1 #同时查找目录和文件
n locate 与 find 的区别
1. locate 的速度比 find 要快很多,find 是在硬盘的目录中进行查找;而 locate 是在定期更新的文件数据库中进行检索,所以速度非常快;
2. find 可以查找实时的文件,但是 locate 对查找的文件有延迟,新建的文件可能会找不到,因为还没更新到数据库中。这时可以结合 updatedb 命令强制更新数据库。
5) updatedb(update the slocate database)
功能描述 | 更新整个系统目录文件的数据库 |
语法 | updatedb |
执行权限 | root |
示例:
# updatedb #注意:默认只有 root 有执行权限
6) grep
功能描述 | 在文件中搜索字符串匹配的行并输出(类似于 Windows 中的 Ctrl + F) |
语法 | grep [选项] [搜索字符串] [文件路径] -v 排除指定字符串中的行 -E 同时匹配多个关键字 -i 忽略大小写 |
示例:
# grep ftp /etc/services
# grep root /etc/passwd /etc/shadow #同时查找多个文件
# grep -v "^#" /etc/inittab #排除注释行(行以首字母#开始的)
# ps -le | grep systemd$ #查找以 systemd 结尾的进程
# who | grep -v root #排除包含 root 的行
# ls -lL /sbin | grep shut* #查找前缀为 shut 的文件
# ls -lL /sbin | grep -E "shutdown|useradd" #同时匹配多个关键字
4. 帮助命令
1) man(manual)
功能描述 | 获得命令或配置文件的帮助信息 |
语法 | man [命令或配置文件] |
示例:
# man ls #查看命令帮助信息(默认类型为1)
# man services #查看配置文件帮助信息,注意:直接写配置文件名称,不能加路径
注意:如果当命令和配置文件同名时,默认优先查看命令的帮助。在 Linux 中帮助类型分为9种,分别为1~9。其中1表示命令的帮助,5表示配置文件的帮助。
# whereis -m ls #可以通过 whereis 命令查看帮助文件所在目录
ls: /usr/share/man/man1/ls.1.gz #man1 目录,则使用 man 1 ls 查询
# man 1 passwd #查看命令的帮助(类型为1)
# man 5 passwd #查看配置文件的帮助(类型为5)
2) info(information)
功能描述 | 查看帮助信息(UNIX 中不支持) |
语法 | info [任何关键字] |
示例:
# info ls
注意:使用方式与 man 命令类似,只是呈现帮助的信息与 man 有所不同,根据个人喜好选择使用 man 或者 info 即可。
3) whatis apropos makewhatis(search the whatis database for strings)
功能描述 | 查看命令简短的描述信息 |
语法 | whatis apropos [任何关键字] |
示例:
# whatis ls #查看命令的简要描述信息
# ls –help #查看命令的选项帮助信息
# apropos fstab #查看包含 fstab 文件名的配置文件描述信息
与 locate 一样,如果安装了新的软件,配置文件或命令的帮组信息改变后,也需要更新索引数据库。即使用 makewhatis 命令,建立 whatis 和 apropos 搜索使用的数据库,当使用这两个命令发生错误时,就是 whatis database 没有建立。
# makewhatis #执行失败(未找到命令?)
4) help
查看 shell 内置命令的帮助信息,例如:
# help cd
# help pwd
5. 压缩解压命令
1) gzip(GUN zip)
功能描述 | 压缩文件,压缩后的文件格式为:.gz |
语法 | gzip [选项] [文件] -1 快速压缩(压缩文件较大); -9 最佳状态压缩(压缩文件较小) -d 解压缩 .gz 文件 |
示例:
# gzip file1 #压缩后的文件为为 file1.gz
# gzip -d file.gz #解压缩
或者
# gunzip file1.gz #解压缩
n gzip 压缩的特点:
1. 只能压缩文件,不能压缩目录,所以通常使用 tar 命令来目录的压缩;
2. 压缩后会删除原来的文件;
3. 压缩比非常惊人(比较好)。
2) bzip2
功能描述 | 压缩文件,压缩后的文件格式:.bz2 说明:bzip2 是 gzip 的升级版 |
语法 | bzip2 [-k] [文件] -k 压缩文件后保原文件 |
示例:
# bzip2 -k file1 #压缩并保留原文件
# bunzip2 -k file1.bz2 #解压并保留原文件
3) tar
功能描述 | 打包目录,压缩后的文件格式:.tar.gz 说明:tar.gz 会保持文件和目录原有的属性。 |
语法 | tar [选项] [打包后的文件名] [目录] -c 创建 tar 包文件 -r 追加文件到 tar 包中的结尾(tar 包使用) -u 仅将较新的文件追加到 tar 包中(tar 包使用) -x 解包 tar 文件 -z 用 gzip 对 tar 包文件压缩或解压 -t 列出压缩文件中文件目录 -C 指定解包的目录 -f 指定压缩或解压后的文件名 -v 可选的,显示打包时或解压时的详细信息 --delete 从 tar 包中删除指定文件 |
提示:tar 命令在使用时,选项可以省略"-",例如:tar zcvf 即可。
示例:
# tar -cf tar2.tar dir2 #打包为 tar 文件
# tar -tf tar2.tar #列出 tar 包中的文件列表
# tar -rf tar2.tar file2 #将 file 追加至 tar 包中
# tar --delete file2 -f tar2.tar #删除 tar 包中的指定文件
# tar -cf dir6.tar dir6 #先打包
# gzip dir6.tar #再压缩
或者
# tar -zcvf dir5.tar.gz dir5 #打包并压缩
# tar -zcvf dir3/ntar.tar.gz /learn/dir1 /learn/file2
##同时打包、压缩多个文件和目录
注意:这里指定打包文件的绝对路径,解压时才可以解压到对应目录下
# tar -ztf dir3/ntar.tar.gz #查看压缩文件中的内容(不解包)
# tar -zxf dir3/ntar.tar.gz #默认解压缩到当前目录(会根据压缩目录结构,在当前目录下创建压缩时的目录)
# tar -zxvf dir3/ntar.tar.gz -C / #解压到根目录(保持压缩时的目录结构)
或者
# cd /; tar -zxf /learn/dir3/ntar.tar.gz; cd /learn #解压到压缩前的目录中,再返回当前目录
# tar -zxf dir3/ntar.tar.gz learn/file2 #解压压缩包中的指定文件
4) zip
功能描述 | 压缩文件或目录,压缩后的文件格式:.zip .zip 是唯一支持 windows 和 linux 通用的压缩格式 |
语法 | zip [-r] [压缩后文件名] [文件或目录] -r 压缩目录 -f 更新压缩文件 -F 修理压缩文件 |
示例:
# zip file1.zip file1 #压缩文件
# zip -r dir6.zip dir6 #压缩目录(好像也不需要 -r 的选项)
# unzip dir5.zip #解压到当前目录
# unzip -d ./dir5 dir6.zip #解压到当前目录下的dir5目录中
n 与 gzip 的区别
1. 可以压缩目录;
2. 压缩后不会删除源文件;
3. 压缩后显示压缩比;
4. 是兼容 Windows 最好的格式。
Ø 总结
命令 | 支持压缩目录 | 删除源文件 | 显示压缩比 | 压缩比 | 后缀 | 兼容WIN |
gzip | 不支持 | 删除 | 否 | 高 | .gz | 不兼容 |
bzip2 | 不支持 | 可选择 | 否 | 高 | .bz2 | 不兼容 |
tar | 支持 | 不删除 | 否 | 未验证 | .rar.gz | 不兼容 |
zip | 支持 | 不删除 | 是 | 未验证 | .zip | 兼容 |
6. 网络通信命令
1) write
功能描述 | 向另外一个用户发信息,以 Ctrl + D 为结束 |
语法 | write <用户名> |
示例:
# write user1
abc
2) wall
功能描述 | 向所有用户广播信息 |
语法 | wall [message] [文件名] |
示例:
# wall abcdef #发送广播
# mesg n #设置不接收广播(y 表示接受)
注意:普通用户不能屏蔽 root 用户的广播信息
3) mail(发送邮件)
4) ping
功能描述 | 测试网络连通性 |
语法 | ping [-cs] IP地址 -c 指定发送请求次数 -s 指定发送请求包的大小,最大为 |
示例:
$ ping 172.20.10.4 #ping其他IP地址
# ping 192.168.1.150 #如果ping不通,ping自身的IP地址,如果能ping通自身IP地址,说明本机网络是没问题的
# ping 127.0.0.1 #ping回环地址,只要安装了 TCP/IP 协议都可以ping通
# ping -c 3 172.20.10.4 #指定发送3次请求
5) ifconfig
功能描述 | 查看网路设置信息 |
语法 | ifconfig [-a] [网卡设备标识] -a 显示所有网卡信息 |
示例:
# ifconfig -a
ens33: inet 192.168.1.150 netmask 255.255.255.0 broadcast 192.168.1.255
# ifconfig ens33 192.168.1.151 #临时设置IP(测试不成功,虚拟机能设置,但不能访问)
7. 其他命令
1) shutdown
功能描述 | 关机 |
语法 | shutdown [选项] -h 指定关机时间 |
示例:
# shutdown -h now #立刻关机(或者 init 0)
# shutdown -h 20 #20分钟后关机
2) reboot
功能描述 | 重启系统 |
语法 | reboot |
示例:
# reboot #立刻重启(或者 init 6)
3) echo
功能描述 | 用于输出指定的字符串 |
语法 | echo [选项] [字符串] |
示例:
# echo string #输出:string
# echo "string" #""双引号是可以省略的,输出:string
# let i=10;let j=20;echo $i $j #同时输出多个变量,结果:10 20
4) md5sum
功能描述 | 用于输出指定的字符串 |
语法 | md5sum [选项] [文件] |
示例:
# md5sum /etc/passwd #对 passwd 文件进行加密并输出
25e59433d7cbfb42bd9ab43b9b7d074a /etc/passwd
# echo 123 | md5sum
ba1f2511fc30423bdbb183fe33f3dd0f -
5) date
功能描述 | 显示或设置系统日期和时间 |
语法 | date [选项]... [+格式] date [选项] [MMDDhhmm[[CC]YY][.ss]] |
示例:
# date #查看系统时间
2020年 04月 08日 星期三 22:37:16 CST
# date +%F" "%H:%M:%S #加空格输出2020-04-18 16:23:49
格式化输出:
# date +%F #年月日:2020-04-08
# date +%D #月日年:04/08/20
# date +%Y #四位年:2020
# date +%y #两位年:20
# date +%m #两位月:04
# date +%d #两位日:08
# date +%H #两位小时:22
# date +%M #两位分钟:40
# date +%S #两位秒:25
更多查看 man date
6) 查看操作系统版本
# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
7) 查看操作系统位数
# getconf LONG_BIT
64