为什么
echo 'foo' 1>&2 2>/dev/null
提供输出? foo
被重定向到文件描述符2,文件描述符2被重定向到/dev/null
。应该没有输出吧?
最佳答案
这是关于您进行重定向时的顺序。当 bash 看到多个重定向时,它会从左到右处理它们。
stdout 的第一个重定向重定向到 stderr (tty) 的当前值。当 stderr 更改为/dev/null 时,stdout 仍写入 stderr 之前的输出 (tty)。
改变它们的位置,它就会起作用。
echo 'foo' 2>/dev/null 1>&2
有关详细信息,请参阅 http://www.catonmat.net/blog/bash-one-liners-explained-part-three/
关于bash - 使用 echo 重定向文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26545377/