8.6 管道符和作业控制
1.管道符
- | “cmd1 | cmd2” --#将前一个命令的输出结果内容传递给后一个命令
2.作业控制
- Ctrl +z --#暂停一个任务,并将该任务丢到后台(该任务依然是停止状态)
- bg --#将一个任务(命令)放到后台并运行,比如vmstat -2,放到后台之后,依然会运行,并在屏幕打印; 对于一个已经用Ctrl+z暂停了的任务直接使用bg,会使之在后台继续运行
- cmd &--#将一个任务(命令)放到后台并运行,对于新开的另一个终端无法用jobs查看到,但可查看到相关的进程(ps aux命令)
- fg --#将后台的命令调到前台并运行,若有多个后台的任务,须在fg后面加上任务的id(通过jobs命令得到),如果不加,默认会调用最近的一个任务. #fg [id]
- jobs --#列出已停止或后台在执行的任务,包括每个任务的id
注:
对于一个已经用Ctrl+z暂停了的任务(例如vmstat 1,后台不执行,屏幕也无打印):
- 直接使用命令bg,会使之在后台继续执行(从暂停到执行),屏幕会打印
- 直接使用命令fg,调到前台并执行
说明bg和fg都会让一个暂停的命令执行起来
任务在后台执行的时候,尽管某些命令(例如vmstat 1)屏幕会一直有打印,但依然可以执行其他命令(命令在后台运行的标志),而在前台执行的任务,就不能运行其他命令了,除非暂停后取消
8.7 shell变量
- #env --#列出系统环境变量
- #set --#列出系统全部变量,包括用户自定义变量
- 变量命名规则:字母、数字和下划线的组合,首位不能为数字
- 变量值有特殊符号时需要用单引号括起来
- #export var=value --#使变量在当前终端(sshd)下成为一个全局变量,在子bash下echo该变量依然可得到变量值,如果在另一个终端下echo则得不到变量值,且全局变量向下(子层bash)生效,如果在子bash里export是一个变量成为全局变量,则该变量在父bash里不生效
- #unset var --#取消变量赋值
- /etc/profile --#用户环境变量,交互,登陆后才执行
- /etc/bashrc --#用户不用登录,执行shell就生效
- ~/.bash_profile
- ~/.bashrc
- ~/.bash_history --#记录历史命令的文件
- ~/.bash_logout --#定义用户退出后需要做的操作