参考 csdn 博客:Shell重定向 &>file、2>&1、1>&2 、/dev/null的区别
在shell脚本中,默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述符是0,1,2
2>1 其实是 标准错误,重定向到 1 文件,这是很容易写错的地方
2>&1 才是正确的写法 &1 和c语言指针寻址有点类似。&就拿到了 1的内存地址。 这样就能把 标准错误,也当做标准输出
- /dev/null是一个文件,这个文件比较特殊,所有传给它的东西它都丢弃掉
- 一般来说, "1>" 通常可以省略成 ">".
- 1>&2 正确返回值传递给2输出通道 &2表示2输出通道
- 2>&1 错误返回值传递给1输出通道, 同样&1表示1输出通道.
- &>file 意思是把标准输出 和 标准错误输出 都重定向到文件file中,此时控制台很干净了。
另外经常看到 一句命令后面添加 一个 &
参考:多行命令的分隔符 ; & 和 && 的区别
原来
command1 & command2 & command3 三个命令同时执行
command1; command2; command3 不管前面命令执行成功没有,后面的命令继续执行
command1 && command2 只有前面命令执行成功,后面命令才继续执行
& 放在启动参数后面表示设置此进程为后台进程
默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'&'实现这个目的。
网友评论