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中则不可使用。
- shell编程,记录输出的消息,tee命令
- shell编程,桌面环境中的脚本,select命令,dialog包的使用,kdialog、gdialog、zenity
- shell编程,将循环输出的结果重定向到文件,将文件内容输入重定向到循环
- shell编程,命令替换$(),<输入重定向,<<内联输入重定向,>输出重定向,>>追加输出重定
- shell编程,定期执行脚本cron,crontab,anacron,定时任务
- shell脚本对 mongo 备份并导入
- shell编程,跳出循环break n,continue n
- shell编程,if-then、else,case,数值、字符串、文件类型比较检测,[ ],(()),[[ ]]
- linux的shell数组变量,给环境变量赋多个值
- 发送消息到飞书告警脚本