Zsh 重定向到 /dev/null 和管道

Zsh 重定向到 /dev/null 和管道

我知道&> /dev/null在 zsh 中将stdout和重定向stderr/dev/null.因此,

echo a &> /dev/null

没有输出。

然而,当我这样做时

echo a &> /dev/null | cat

cat 将打印a,而我期望它不会打印任何内容。

这里发生了什么?

答案1

正如 don_crissti 已经提到的,这是 的默认行为zsh,可以使用 关闭unsetopt multios

另请参阅 的联机帮助页zshmisc

答案2

请注意,管道是隐式重定向;因此

date >foo | cat

将日期写入文件“foo”,并将其通过管道传递给 cat。

从这里:http://zsh.sourceforge.net/Doc/Release/Redirection.html

因此, withmultios选项echo a &> /dev/null | cat相当于echo a 2>1 | tee /dev/null | cat在其他 shell 中,例如bash.

相关内容