linux的shell,which,type,history,alias,coproc后台模式,协程,子shell
进程列表:
(pwd; ls ; cd ; ls ) 在命令外加上括号可以让命令列表变为进程列表
父shell和子shell:
在括号中执行命令可以产生子shell,运行子shell系统要为子shell创建一个全新的环境。
例:(pwd; ls)
输出环境变量 $BASH_SUBSHELL 可以查看建立了几个子shell
echo $BASH_SUBSHELL;
后台模式:
在命令后面加上“&”可以让命令在后台运行。
例:sleep 30&
jobs 查看后台运行的进程
-l 显示进程PID
后台模式可以将任务置入后台,不会让子shell的I/O受制于终端
例:(tar -cf demo.tar /home/demo ; tar -cf test.tar /home/test)&
协程:
在后台生成子shell并在这个子shell中执行命令
coproc pwd pwd为要执行的进程,并在后台运行,也会产生一个进程ID
coproc diy_name { sleep 1; pwd } 为进程命名,花括号和命令之间要有空格
coproc ( sleep 10 ; sleep 10 ) 协程与进程列表结合起来使用
注意:嵌套shell会让运行速度变慢消耗资源
外建命令:
shell的外部命令,需要用子进程来运行,命令存在位置通常为:/bin、 /usr/bin、 /sbin、 /usr/sbin 中;外部命令会创建出一个全新环境的子进程。
which ls 查看命令所处的位置
type -a pwd 查看命令的位置,
-a 可以查看同一个命令的多种实现,内部命令和外部命令
内建命令:
shell内部的命令,如cd、 exit 等
history命令:
可以显示最近使用过的1000条命令。当退出shell时会将命令的历史记录从内存中保存到用户目录的隐藏文件.bash_history中。
!! 可以再次执行上一条使用过的命令
-a 可以强制将内存中的命令存入.bash_history中。
-n 可以在打开多终端时重新读取.bash_history文件
!20 可以再次执行历史记录中的第20条命令
alias 命令别名
-p 查看命令别名
alias li='ls -li' 定义别名,定义之后在shell脚本中也可使用,但在其他shell中则不可使用,如子shell中则不可使用。