3-1 父子shell
bash # 建立子Shell
ps -f # 显示UID,PPIP,C与STIME栏位。
ps --forest # 以依赖关系查询进程 ↓
3-2 ; 分号
ls ; pwd ; cd / # 依次执行
(ls ; pwd ; cd /) # 创建子Shell依次执行↓
echo $BASH_SUBSHELL # 是否用子Shell执行
3-3 sleep、jobs 命令
sleep 300 # 将目前动作延迟一段时间(s、m、h 或 d,其中 s 为秒,m 为 分钟,h 为小时,d 为日数)
sleep 300& # 挂在后台执行(用kill命令干掉)
…… & # 后台执行
job # 显示作业的状态
job -l # 在作业信息中额外的列出PID
- 挂在后台,如果要干掉,则用Kill命令
- jobs 显示作业的状态。-l 在作业信息中额外的列出PID
3-4 coproc协程
coproc sleep 10 # 协程处理命令,同时做两件事
coproc bayy { sleep 10; sleep 30; } & # 在后台生成一个子shell,并在子shell中执行命令
# 一定要分号结尾,大括号内空格
3-5 外部命令和内建命令
- Shell执行的命令可以分为内建命令(built-in)和外部命令(external)
-
内建命令是构建在shell内部
- 内建命令由当前shell本身来执行,例如echo, cd等等
-
后者是一个独立的文件(可以是二进制文件,也可以是一个脚本)
- 外部命令的执行shell进程会fork一个子进程,父进程随后挂起,然后在子进程中exec加载外部文件,子进程返回后,父进程才继续执行
-
history # 查看之前创建的命令
!行号 # 执行之前执行的位于第n行的命令
alias # 定义或显示别名
alias li='ls -li' # 定义别名
# 关闭当前Shell再无法使用
type #显示指定命令的类型