热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么管道中的重定向在Bash和Zsh中表现不同?

当连接到管道时,重定向在 Bash 和 Zsh 中的行为不同:bash> echo foo >/dev/null | catbash>zsh> echo foo >/dev/null | catfoo

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

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

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

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

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

回答

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

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

这在手册中记录如下。

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

date >foo | cat

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







推荐阅读
author-avatar
平凡的稳健投资
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有