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

Rag*_*nar 6 zsh io-redirection

由此我了解到,&> /dev/nullzsh 中将stdout和重定向stderr/dev/null. 因此,

echo a &> /dev/null
Run Code Online (Sandbox Code Playgroud)

没有输出。

然而,当我这样做时

echo a &> /dev/null | cat
Run Code Online (Sandbox Code Playgroud)

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

这里发生了什么?

Tho*_*mas 6

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

另请参阅 的联机帮助页zshmisc

  • @Ragnar `/dev/null` 只是一个文件,与其他文件一样,重定向到文件并同时重定向到终端是非常常见的做法。Zsh 无法猜测您想要实现的目标。 (5认同)