Bash 使用echo重定向文件描述符

Bash 使用echo重定向文件描述符,bash,file-descriptor,Bash,File Descriptor,为什么 给出输出foo被重定向到文件描述符2,文件描述符2被重定向到/dev/null。应该没有输出?这是关于重定向的顺序。当bash看到几个重定向时,它会从左到右处理它们 stdout的第一个重定向重定向到stderr(tty)的当前值。当stderr更改为/dev/null时,stdout仍然写入stderrs的前一个输出(tty) 换个位置就行了 echo 'foo' 1>&2 2>/dev/null 有关更多详细信息,请参见我仍然不明白原因。连同此解释,我现在明白了

为什么


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

这是关于重定向的顺序。当bash看到几个重定向时,它会从左到右处理它们

stdout的第一个重定向重定向到stderr(tty)的当前值。当stderr更改为/dev/null时,stdout仍然写入stderrs的前一个输出(tty)

换个位置就行了

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

有关更多详细信息,请参见

我仍然不明白原因。连同此解释,我现在明白了:很好的链接,我将在帖子中添加它,供其他人查找。
echo 'foo' 2>/dev/null 1>&2