如何理解shell重定向2>&1
重定向命令
符号解释
这里的&没有固定的意思
&连接的字符不能有空格
放在>后面的&,表示重定向的目标不是一个文件,而是一个文件描述符,内置的文件描述符如下
1 => stdout
2 => stderr
0 => stdin
命令1
等价于 command &1>log.txt,所以标准错误还是会输出到屏幕。
命令2
标准错误被重定向到标准输出,无论是标准错误还是标准输出都作标准输出处理,因为命令只有成功或失败。
命令3
命令从左执行,分两部分理解:
>log.txt 标准输出stdout重定向到log.txt文件,意思是说log.txt表示为stdout。
标准错误stderr重定向到标准输出stdout,而stdout被表示为log.txt,所以这里的stdout指的是log.txt。
综上,无论是命令报错还是正常输出,其内容都会写入到log.txt
扩展
可以利用shell重定向在php变量中接收命令输出的内容,以判断命令执行结果。
如何理解shell重定向2>&1
http://blog.icy8.cn/posts/59179/