什么是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的特点
1.记录命令历史
用户在Linux系统中敲过的命令会保存在用户的家目录中的.bash_history文件中,只有当用户正常退出shell时,在当前shell中运行的命令才会保存,一场退出时,命令无法保存。
2.指令和文件名补全
按tab键,可以帮你补全一个指令,也可以补全路径或文件名,若连续按两次tab键,系统会把所有的指令或文件名列出来。
3.别名
可以通过alias把一个常用的并且很长的命令进行指定别名,使用unalias解除别名功能。直接敲alias会看到系统预设的alias。
命令别名设置功能
添加指定命令别名:alias
临时生效:alias 目标命令名称=‘需要执行的命令’;例如:alias hh=‘ls -l’
删除指定的命令别名:unalias
当前用户永久有效:vim ~/.bashrc;source .bashrc使其生效
所有用户均可用的命令别名:vim /etc/bashrc;source /etc/bashrc(初始化此文件使其生效)
4.通配符
在bash下,可以使用*来匹配0个或多个字符,而用?匹配一个字符。
5.输入输出重定向
输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。
输入重定向命令为<;
输出重定向命令为>;
追加重定向命令为>>;
一个尖括号表示覆盖,两个尖括号表示追加!
6.管道符
'|'把前面命令运行的结果给后面的命令;
7.作业控制
当运行一个进程时,可以使用Ctrl+z暂停,然后使用fg命令恢复,使用bg命令放到后台运行,使用Ctrl+c终止!
此时我们使用bg使其在后台运行之后会出现以下情况:
返回结果一直显示在屏幕上,而且无法再正常输入命令!
此时我们需要另外开启一个终端来将此后台进程强制结束!
强制结束1883进程:
之后我们再次返回第一个终端来看是否已经停止?
强制结束进程成功!