Sas*_*lla 4 bash shell zsh pipe io-redirection
当连接到管道时,重定向在 Bash 和 Zsh 中的行为不同:
bash> echo foo >/dev/null | cat
bash>
Run Code Online (Sandbox Code Playgroud)
zsh> echo foo >/dev/null | cat
foo
zsh>
Run Code Online (Sandbox Code Playgroud)
Bash 符合我的预期;在 Zsh 中,重定向到的 STDOUT/dev/null似乎死而复生。
为什么会有这种差异?在每种情况下发生了什么?
Zsh 有一个叫做multios的奇特功能。如果关闭它,行为将几乎与 Bash 相同。
% echo a >/dev/null | cat
a
% set +o multios
% echo a >/dev/null | cat
%
Run Code Online (Sandbox Code Playgroud)
这在手册中记录如下。
请注意,管道是一种隐式重定向;因此[,当multios开启时,默认开启]
Run Code Online (Sandbox Code Playgroud)date >foo | cat将日期写入文件
foo,并将其通过管道传输到cat.
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |