简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了。打个比方,如果把计算机硬件比作一个人的躯体,而系统内核则是人的大脑,至于shell,把它比作人的五官似乎更加贴切些。回到计算机上来,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。

 

特点:

1)记录命令历史

我们敲过的命令,linux是会有记录的,预设可以记录1000条历史命令。这些命令保存在用户的家目录中的.bash_history文件中。有一点需要你知道的是,只有当用户正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history文件中。

与命令历史有关的有一个有意思的字符那就是”!”了。

常用的有这么几个应用:

(1)!! (连续两个”!”),表示执行上一条指令;

(2)!n(这里的n是数字),表示执行命令历史中第n条指令,例如”!100”表示执行命令历史中第100个命令;

(3)!字符串(字符串大于等于1,例如!ta,表示执行命令历史中最近一次以ta为开头的指令。

wKioL1Q_QeyTrT2vAADwEs5dPVA015.jpg

2)指令和文件名补全

tab键,它可以帮你补全一个指令,也可以帮你补全一个路径或者一个文件名。连续按两次tab键,系统则会把所有的指令或者文件名都列出来。

3)别名

通过alias把一个常用的并且很长的指令别名一个简洁易记的指令。

用unalias解除别名,输入alias会看到目前系统预设的alias。

alias语法:alias[命令别名]=[‘具体的命令’]。

wKiom1Q_Qc7hKc3SAADBoiAm4Qg880.jpg

4)通配符

在bash下,可以使用*来匹配零个或多个字符,用?匹配一个字符。

wKioL1Q_QhKTv0DKAABhskoRsdE411.jpg

5)输入输出从定向

输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。输出重定向更为常用,它经常用于将命令的结果输入到文件中,而不是屏幕上。

输入重定向的命令是<,输出重定向的命令是>,另外还有错误重定向2>,以及追加重定向>>。

6)管道符

把前面的命令运行的结果丢给后面的命令处理。

7)作业控制

当运行一个进程时,你可以使它暂停(按Ctrl+z),然后使用fg命令恢复它,利用bg命令使他到后台运行,你也可以使它终止(按Ctrl+c)