为什么
echo 'foo' 1>&2 2>/dev/null
给出输出? foo
被重定向到文件描述符2,文件描述符2被重定向到/dev/null
。应该没有输出?
答案 0 :(得分:4)
这是关于何时进行重定向的顺序。当bash看到几个重定向时,它会从左到右处理它们。
stdout的第一次重定向重定向到stderr(tty)的当前值。当stderr更改为/ dev / null时,stdout仍会写入stderrs之前的输出(tty)。
更改它们的位置,它会起作用。
echo 'foo' 2>/dev/null 1>&2
有关详细信息,请参阅http://www.catonmat.net/blog/bash-one-liners-explained-part-three/