将两个命令的输出通过管道合并为一个

将两个命令的输出通过管道合并为一个

在 unix/bash 中是否可以通过管道将两个命令的输出传送到另一个命令?

我尝试运行以下命令,该命令成功运行了两个命令,但第一个命令通过管道传输到 stdout,第二个命令通过管道传输到 less。

$ grep 40515575 * && zgrep 40515575 * | less

答案1

尝试一下这个:

$ ( grep 40515575 * && zgrep 40515575 * ) | less

答案2

根据系统的不同,您可能会发现“less”能够识别许多不同类型的文件,例如 gzip 和 bzip2 压缩文件。

也许你真正想说的是:

less * | grep 40515575 | less

记住这一点很有帮助,在这种情况下,最初的“less”的作用类似于“cat”,因为它的输出不是发送到 TTY。

相关内容