【问题标题】:Why does redirection in pipelines behave differently in Bash and Zsh?为什么管道中的重定向在 Bash 和 Zsh 中表现不同?
【发布时间】:2021-05-15 17:55:34
【问题描述】:

连接到管道时,Bash 和 Zsh 中的重定向行为不同:

bash> echo foo >/dev/null | cat
bash>
zsh> echo foo >/dev/null | cat
foo
zsh>

Bash 符合我的预期;在 Zsh 中,重定向到 /dev/null 的 STDOUT 似乎起死回生。

为什么会有这种差异?每种情况发生了什么?

【问题讨论】:

    标签: bash shell pipe zsh io-redirection


    【解决方案1】:

    Zsh 有一个名为multios 的奇特功能。如果您将其关闭,其行为将与 Bash 几乎相同。

    % echo a >/dev/null | cat
    a
    % set +o multios          
    % echo a >/dev/null | cat
    % 
    

    这在手册中有如下记载。

    注意管道是隐式重定向;因此[,当multios开启时,默认开启]

    date >foo | cat
    

    将日期写入文件foo,并将其通过管道传输到cat

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      • 2015-09-06
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      相关资源
      最近更新 更多