bash 猫管据称行为不端

bash cat pipe supposedly misbehaving

下面我做了echo 写入stderr;然后它通过管道传输到 cat,它有两个输出流 连接到 /dev/null.

$ echo something 1>&2 | cat 2>&1 >/dev/null
something

总而言之,什么都不应该打印。事实证明,something 仍然被打印!

有人可以解释一下这里发生了什么吗? TY.

当您将输出写入 stderr 时,它会显示输出。如果您将其写入 stdout,它不会显示输出。 维基百科关于管道的文章中的这张图片解释得很好

有关详细信息,请阅读 Linux 中有关管道的 Wikipedia article