每一行称为管道,一行可以是标准输入或脚本,一行可以有一个或多个命令,可以用一个或多个管道字符(|)隔开,或者是其他符来分割单个命令:
command1;command2 分号:命令间无逻辑关系。命令按顺序从前向后依次执行,所有命令最终都会被执行,即使分号前命令出错也不影响后面的命令
command1 | command2 管道 :处理前一个命令正确输出,不处理错误输出
;管道命令右边命令,必须得能够接收标准输入流命令
command1 > command2 重定向:左边的命令应该有标准输出 > 右边只能是文件
command1 < command2 重定向:左边的命令应该需要标准输入 < 右边只能是文件
command & 后台运行:将 & 前面的命令放入后台执行,立即返回到交互bash环境,不占用控制台
nohup command & 后台运行:将 & 前面的命令放入后台执行,即使关掉控制台退出帐号,仍继续运行
command1 & command2 后台运行:前面的命令被放入后台,立即执行后面的命令,相当于两个命令并行,两个命令无任何逻辑关系
command1 && command2 逻辑 AND:上一条命令运行成功后,才运行下一条命令
command1 || command2 逻辑 OR: 上一条命令运行失败后,才运行下一条命令
command1 依次执行每行命令,前后无逻辑关系,即使command1出错,command2仍执行
command2
如:
ls aa
echo 'haha'
ls: cannot access 'aa': No such file or directory
haha
command > file 2>&1 合并到一个窗口输出。1 代表stdout标准输出,2 代表stderr标准错误。重定向的设置让2重定向到1,即stderr重定向到stdout在一起重定向。其中&只是区分1是代表stdout而不是代表一个文件名。
command |& tee output.txt 合并到一个窗口输出,同时屏幕显示。到文件以overwrite方式保存
command |& tee -a output.txt 合并到一个窗口输出,同时屏幕显示。到文件以append方式保存