什么是shell?
shell是系统和计算机硬件交互时使用的中间介质,是系统的一个工具。在shell和计算机硬件之间还有一个系统内核。用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。通俗一点来说,shell充当来用户与计算机之间的翻译官角色。
可以将shell看作是一种语言名称,具体的语法遵循bash等的规定。
mac系统自带的Terminal或者自行安装的iTerm2都是标准的shell环境。
什么是bash?
bash是shell版本的一种。在查看系统/etc/shells文件中的内容时,可以看到有多种shell类型,
如bash, csh, ksh, sh等,而Linux系统中默认的shell是bash,即Bourne Again Shell,是sh(Bourne Shell)的增强版本。sh是最早流行起来的shell。
bash的特点
bash有以下一些特点:
-
记录命令历史
用户在linux系统中敲过的命令会保存在用户的家目录中的.bash_history文件中,只有当用户正常退出shell时,在当前shell中运行的命令才会保存,异常退出时,命令无法保存。 -
指令和文件名补全
按tab键,可以帮你补全一个指令,也可以补全路径或文件名,若连续按两次tab键,系统会把所有的指令或文件名列出来。 -
别名
可以通过alias把一个常用的并且很长的命令进行指定别名,使用unalias解除别名功能。
直接敲alias会看到系统预设的alias。 -
通配符
在bash下,可以使用*来匹配0个或多个字符,而用?匹配一个字符。 -
输入输出重定向
输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。
输入重定向命令为<;
输出重定向命令为>;
追加重定向命令为>>; -
管道符
‘|’ 把前面命令运行的结果给后面的命令 -
作业控制
当运行一个进程时,可以使用Ctrl+z暂停,然后使用fg命令恢复,使用bg命令放到后台运行,使用Ctrl+c终止。