简单点理解,shell就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了。打个比方,如果把计算机硬件比作一个人的躯体,而系统内核则是人的大脑,至于shell,把它比作人的五官似乎更加贴切些。回到计算机上来,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。
特点:
1)记录命令历史
我们敲过的命令。linux会有记录,预设可以记录1000条历史记录。这些命令保存在用户目录的.bash_history文件夹中。只有当用户正常退出shell时,在当前shell中运行的命令才会保存至.bash_shell.
!!表示执行上一条指令,!n表示执行历史第n条指令,!string表示执行命令中最近一次以string开头的指令
2)指令和文件名补全
tab键可以帮助补全一个指令、路径或文件名。连续按两次tab,系统会把所有的指令和文件名都列出来
3)别名
可以通过alias把一个常用并且很长的指令别名一个简单的指令。如果不想用了,还可以用unalias接触别名功能。语法:alias[命令别名]=【‘具体的命令’】
4)通配符
在bash下,可以使用*来匹配0或多个字符,?匹配一个字符
5)输入输出重定向
输入重定向用于改变命令的输入,输出重定向用于改变命令的输入。输出重定向更为常用,经常用于将命令的结果输入到文件中,而非屏幕上。输入重定向的命令是"<",输出重定向的命令是">",另外还有错误重定向"2>",以及追加重定向">>"
6)管道符
7)作业控制
当欲行一个进程时,可以使他暂停(Ctrl+Z),然后使用fg命令恢复它,利用bg将它到后台运行,也可以终止它(Ctrl+C)
Shell中的特殊符号
1、*:代表0或多个字符或数字
2、?:代表一个任意字符
3、#:在Linux中表示注释说明
4、\:脱意字符,将后面的特殊符号还原为普通字符,如“*”
5、|:管道符,作用是将符号前面的命令的结果丢给符号后面的命令
6、$:除了用于变量前面的标识符外,就是和“!”结合起来使用,“!$”表示上条命令中最后一个变量
7、;:很好,命令结束符
8、~:用户主目录
9、&:将一条命令放到后台执行,使用jobs查看当前shell后台执行的任务,fg将任务掉到前台
10、>,>>,2>,2>>:重定向符号>和>>分别表示取代和追加的意思,2>表示错误重定向,2>>表示错误追加
11、[]:中括号,中间为字符组合,代表中间字符中的任意一个
12、&&与||,用于多条命令间的分隔符