1. 进程列表
- 在一行中指定依次运行的一系列命令,在命令之间添加
;
命令列表 pwd; ls # 不能放到后台进程 进程列表 (pwd; ls) # 子shell运行结束会返回到父shell,尽管与命令命令列表看起来相似 进程分组 {pwd; ls} 不会启动子shell,像命令列表一样,只是给命令进行了分组 # shell 子进程:($BASH_SUBSHELL环境变量) ls; echo $BASH_SUBSHELL; (pwd; echo $BASH_SUBSHELL; (ls; echo $BASH_SUBSHELL)) # $BASH_SUBSHELL回显的值 0 # 根shell 1 # 子shell 2 # 第二层子shell
- 进程列表会生成一个子shell来执行对应的命令,借助环境变量来
$BASH_SUBSHELL
查看是否存在子shell
ps:sleep的默认单位为 秒
2. 后台模式
- 后台模式会进入任务列表
jobs
sleep 300& jobs jobs -l ps -f --forest
- 子shell被sleep暂停,不执行sleep的下一条指令,当sleep被kill时,sleep下一条指令被执行,子shell进程运行结束
3. 协程
- 功能与进程列表相似:在子shell中执行。
coporc My_job { sleep 10; }
# 子进程中运行进程分组
4. 协程、后台模式、进程列表
-
协程
可以同时做两件事,它在后台生成一个子shell,并在这个子shell中执行命令。 -
后台模式
中运行命令可以在处理命令的同时让出CLI,以供他用。 -
进程列表
是运行在子shell中的一条或多条命令。注: 目前看来协程和进程列表作用相同,利用子shell执行命令,然后会在任务列表增加任务
5. 外部命令、内建命令
衍生 forking
当外部命令执行时,会创建一个子进程。# 外部命令 # 寻找外部命令的位置 which ps # 查看命令类型 外部命令或内建命令 有些命令echo、pwd有多种实现,它们既有内建命令也有外部命令 type ps type -a ps # 显示所有位置 # 内建命令 type -a echo # 同时有内建和外部命令,优先使用内建 echo is a shell builtin echo is /usr/bin/echo echo is /bin/echo
6. history
!!
快速重复执行上条指令![line_num]
history -a
将当前终端的历史记录行添加到历史记录文件history -w
将当前历史记录列表附加到历史记录文件中并且附加它们到历史列表中
7. 其他
- wc 计数 -l 统计行数
- grep 搜索符合条件的字符串
- 递归查找某目录下的所有文件
find ~ -name typescript
- script 开始脚本记录,exit 保存记录并停止记录
- shell 子shell 孙shell 曾孙 shell
ps -f --forest
alias
别名
PATTERNS
PATTERN is a shell pattern (not a regular expression). The
pattern ? matches any one character, whereas * matches any
string (composed of zero, one or multiple characters). For
example, *.o will match any files whose names end in .o.
Therefore, the command
du --exclude='*.o'
will skip all files and subdirectories ending in .o (includ‐
ing the file .o itself).