1. 基本工具


1.1 特殊字符

shell的特殊字符有:&、;、|、*、?、'、"、`、[、]、(、)、$、<、>、{、}、^、#、/、\、%、!、~、+。要将这些具有特殊含义的字符当作普通字符使用,可对它们转义使用,在特殊字符前加反斜杠" \ "即可。要将连续的两个或多个特殊字符转义,必须在每个字符前加一个反斜杠。

转义删除字符(CONTROL+H)、行删除字符(CONTROL+U)和其他控制字符的唯一方法就是在它们前面加入CONTROL+V,如下所示:

141923826.jpg


1.2 管道

管道是Linux中不可缺少的功能。进程间的通信是Linux的特点之一,管理(用" | "表示)为这种通信的最简单方式,它接收一个工具的输出并将其作为另一个工具的输入。用术语表示为:管理是将一个进程的标准输出重定向为另一个进程的标准输入,如下所示:

194421689.jpg


1.3 ls

使用ls工具可显示一个目录下的所有文件列表,如下所示:

141250333.jpg

常用参数:

1) -a: 列出目录下的所有文件,包括隐藏文件。

2) -A: 列出除了" . "和" .. "之外的其他所有文件。

3) -l: 显示文件的详细信息。

4) -S: 根据文件大小排序。

5) -t: 根据文件修改时间排序。


1.4 cat

cat工具可用来显示文本文件的内容,如下所示:

142054254.jpg

常用参数:

1) -b: 输出行号,但不包含空白行。

2) -n: 输出行号。

3) -s: 遇到连续多个空白行时,替换为一行。


1.5 rm

rm工具用来删除文件,如下所示:

142137479.jpg

常用参数:

1) -f: 强制删除。

2) -i: 删除前需要确认。

3) -r: 递归删除目录及内容。


1.6 less或more

当要浏览的文件内容超过一屏时,可使用less或more工具。这两个工具都将文件显示一屏后停下,所以被称为分页程序。它们之间存在一些细微的差别,如到文件末尾时,less显示EOF信息等待输入q返回shell,而more直接退出到shell,如下所示:

143657818.jpg

less常用操作:

1) /: 使用模式向前搜索。

2) ?: 使用模式向后搜索。

3) n: 向前查找下一个匹配文本。

4) N: 向后查找上一个匹配文本。

5) CTRL+F: 向前滚动一屏。

6) CTRL+B: 向后滚动一屏。

7) CTRL+D: 向前滚动半屏。

8) CTRL+U: 向后滚动半屏。

9) j: 向前移动一行。

10) k: 向后移动一行。

11) g: 移动到第一行。

12) G: 移动到最后一行。

13) q: 退出less。

more常用操作:

1) SPACE: 向前滚动一屏。

2) n+SPACE: 向前滚动n行。

3) b: 向后滚动一屏。

4) q: 退出more。


1.7 hostname

hostname命令可以显示正在使用的系统名。在不能确定自己是否登录到正确的系统上时,可使用该命令,如下所示:

204727299.jpg


1.8 echo

echo工具可复制其后跟的任何内容,并将其显示在屏幕上,如下所示:

194739940.jpg


1.9 date

date命令用来显示当前的日期和时间,如下所示:

194857279.jpg


1.10 script

script工具可记录登录会话的部分或全部信息,此工具只对基于文本的设备有效。默认情况下,script捕捉到的会话内容将存放在typescript文件中,或通过script后跟文件名,存在指定文件中,使用命令exit将终止script会话,如下所示:

195606683.jpg


1.11 unix2dos

为了方便Windows系统用户阅读Linux系统下的文件,需要转换文件格式。unix2dos实现了Linux文本格式到Windows文本格式的转换,而dos2unix可将DOS格式的文件转换为Linux格式,如下所示:

200026419.jpg


2. 文件操作


2.1 cp

cp工具实现了文件的复制,此工具可对任何文件进行复制,如文本文件和可执行文件,如下所示:

205158161.jpg

常用参数:

1) -f: 强制复制。

2) -i: 覆盖目标前需要确认。

3) -r: 递归复制目录及内容。


2.2 mv

mv工具可对文件重命名,该命令执行后不会产生文件副本,其语法与cp相同,如下所示:

210844935.jpg

常用参数:

1) -f: 强制重命名。

2) -i: 覆盖目标前需要确认。


2.3 grep

grep工具是在一个或多个文件中搜索是否包含给定字符串。此工具只显示包含查找字符串的文本行,并不修改搜索出的文件,如下所示:

211436389.jpg

常用参数:

1) -a: 将二进制文件作为文本文件搜索。

2) -c: 显示符合行的行数。

3) -e: 以正则表达式搜索。

4) -i: 忽略大小写。

5) -n: 显示行号。


2.4 head

默认情况下,head工具显示文件的前10行信息,后跟连字符和数字即可指定显示行数,如下所示:

212949174.jpg


2.5 tail

tail工具在默认情况下显示文件的最后10行内容,可设定其显示的行数,如下所示:

213357865.jpg

常用参数:

1) -f: 动态显示文件的更新。


2.6 sort

sort工具是将文件内容按行排序后显示,但并不改变文件内容,如下所示:

213920457.jpg

常用参数:

1) -n: 以数值方式排序。

2) -r: 反向排序。

3) -u: 去除重复行。


2.7 uniq

uniq工具用来显示文件内容,对于连续的重复行将只显示一行,但不会改变原文件的内容,如下所示:

193043668.jpg

常用参数:

1) -c: 在行首显示每行出现的次数。

2) -d: 只显示重复行。


2.8 diff

diff工具用来对两个文件进行比较,显示两者所有不同之处,但不改变任何一个文件的内容,如下所示:

193502191.jpg

常用参数:

1) -b: 忽略空白字符。

2) -B: 忽略空白行。

3) -c: 显示全部内容,并标出不同之处。

4) -i: 忽略大小写。


2.9 file

在不通过打开文件查看内容的情况下,file工具可直接获得Linux系统中任何文件的内容信息,如下所示:

193951357.jpg


3. 压缩和归档


3.1 bzip2

bzip2工具通过分析和有效记录文件内容的方法来压缩文件。压缩后的文件与原来的文件看上去完全不同,它包含许多非打印字符,所以无法直接浏览其内容。执行bzip2后,文件会被重命名为原文件名加后缀.bz2,如下所示:

200404630.jpg

常用参数:

1) -c: 将结果发送到标准输出。

2) -d: 解压缩。

3) -f: 强制压缩。

4) -t: 测试压缩文件完整性。

5) -v: 显示详细信息。


3.2 bunzip2

bunzip2工具可将bzip2压缩的文件解压缩恢复为原来的文件,所下所示:

200744719.jpg

常用参数:与bzip2相同。


3.3 bzcat

bzcat工具可用来显示bzip2压缩文件的内容,bzcat首先将压缩数据解压缩,然后显示解压缩后的文件内容,如下所示:

201339136.jpg

常用参数:与bzip2相同。


3.4 gzip

gzip、gunzip和zcat是比bzip2出现早且较低效的压缩工具,它的一些标记和操作与bzip2类似。通过gzip压缩的文件名后缀为.gz,如下所示:

201824498.jpg

常用参数:

1) -c: 将结果发送到标准输出。

2) -d: 解压缩。

3) -r: 递归压缩。

4) -t: 测试压缩文件完整性。

5) -v: 显示详细信息。


3.5 tar

tar工具可完成许多功能,常用来将多个文件或多个目录归档为一个tar文件或解开,如下所示:

202630456.jpg

202914236.jpg

常用参数:

1) -c: 建立一个文件。

2) -f: 使用文件名,注意后面必须跟上文件名,不能有其他参数。

3) -j: 是否需要bzip解压缩。

4) -v: 显示详细信息。

5) -x: 解开一个文件。

6) -z: 是否需要gzip解压缩。


4. 定位命令


4.1 which

当输入一个Linux命令后,shell将在一组目录下查找具有该名字的程序,并运行找到的第1个。工具whick通过显示工具完整路径来帮助查找该程序,如下所示:

203812460.jpg


4.2 whereis

whereis工具是在标准路径下(而非用户设定的路径)搜索与工具相关的文件,如下所示:

204114680.jpg


4.3 apropos

当需要完成某个特定任务但又不知道命令名字时,可用关键字和apropos工具进行搜索。apropos运行需要建立whatis数据库和维护该数据库的makewhatis工具,此任务通常由cron完成。apropos工具可在所有man页的简短描述行中搜索关键字,然后显示匹配行,如下所示:

204403111.jpg


4.4 locate

locate工具用于在本地系统中搜索文件。在使用locate工具时,需要编译和更新locate数据库,通常该数据库由cron脚本每天更新一次,如下所示:

205010482.jpg


5. 系统信息


5.1 who

工具who可将登录到系统的用户列出,如下所示:

191554843.jpg

常用参数:

1) -H: 显示各栏位的标题。

2) -q: 显示登录系统的总人数。


5.2 finger

使用finger可显示出登录到系统的用户的相关信息。除了显示用户的登录名外,还显示用户连接的终端设备、最近一段时间输入的内容,所在位置,如下所示:

192016609.jpg

常用参数:

1) -l: 显示详细的用户信息。


5.3 w

w工具也可列出登录用户名单,如下所示:

192605831.jpg


5.4 write

write工具用来给一个已登录用户发送消息。两个用户通过write发送消息的方式是一种双向通信的方式。通过按下CONTROL+D通知write退出,返回到shell,对方用户的终端将显示EOF,如下所示:

193634314.jpg


5.5 mesg

当不想接收其他用户发来的消息时,可输入"mesg n",通过输入"mesg y"就可再次接收消息,如下所示:

193836714.jpg