【发布时间】:2015-10-18 08:44:25
【问题描述】:
我经常看到这样的命令:
command1 |& command2
所以我们在这里所做的就是将 stderr 重定向到 stdin,这样它们都“成为”stdin 到管道中的下一个元素。
或者更好的描述在Bash Reference manual -> Pipelines:
管道是一系列简单命令,由其中一个命令分隔 控制运算符“|”或“|&”。
...
如果使用
|&,command1 的标准错误,除了它的 标准输出,通过连接到 command2 的标准输入 管道;它是2>&1 |的简写。这种隐式重定向 标准输出的标准错误是在任何之后执行的 命令指定的重定向。
但是,我想知道:这种语法是否适用于所有 Bash 版本?也就是说,它总是可以与2>&1 | 互换吗?是否也可以在任何其他 shell(ksh、csh...)中使用?
【问题讨论】:
-
您的标题和您最终提出的问题对我来说似乎是两个不同的问题。我建议编辑标题
-
@MohitChandak 你是对的。我从标题开始,然后调查了这个话题。当我把一些事情整理好时,其他问题又出现了。将编辑它,谢谢。
-
如果你想知道什么可以在其他shell中使用,你最好尝试一下shell的posix模式,因为标准是保证一个东西在另一个系统中肯定可以工作的唯一方法跨度>