进程列表:

    (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中则不可使用。