使用echo重定向文件描述符

时间:2014-10-24 09:39:14

标签: bash file-descriptor

为什么

echo 'foo' 1>&2 2>/dev/null

给出输出? foo被重定向到文件描述符2,文件描述符2被重定向到/dev/null。应该没有输出?

1 个答案:

答案 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/