shell 的父子關系
在終端仿真器中 輸入等效的bash命令時會創建一個新的 子shell
bash shell 在運行的時候就是一個進程
ps? -- forest 命令? 可以列出 shell 嵌套結構
進程列表
可以在一行中依次運行一系列命令,只要在命令中間加上? 分號(;)
命令列表想要成為進程列表? 要將命令包含在 括號中?
另一種命令分組語法: {?? command;?? }并不會創建子shell
echo? $BASH_SUBSHELL??? 如果返回0? 說明沒有子shell
后臺模式
在命令末尾? 加? & 可將命令置入后臺模式
sleep? 毫秒數???????? 暫停進程
jobs 可以顯示所有后臺模式中的進程
參數?? -l
協程
在后臺生成一個子shell 并在shell 中執行命令
coproc命令?? 參數 為命令
可以用擴展語法給進程起名字?? coproc??? my_job? { sleep? 10; }
理解shell的內建命令
外部命令程序通常位于??? /bin???? /usr/bin?? /sbin?? /us/sbin 中
which? 和type? 可以 顯示 命令的路徑
執行外部命令時? 會創建一個子進程
內建命令
內建命令不需要子進程來執行
type? 可以顯示命令是否內建??? which只顯示外部命令文件
history命令
通常保存 近1000條命令
輸入 ! !?? 回車?? 可 以再執行一邊上一條命令
當shell 退出時 命令 才會被寫入 歷史記錄中
執行歷史記錄中任一條命令? 用 ! 編號? 即可
命令別名
alias 是內建命令?? 別名只在被定義 的shell 進程中有效