在 bash 中使用两个命令读取相同的标准输入

在 bash 中使用两个命令读取相同的标准输入

我想将输出通过管道传输到 bash 中的两个单独命令 <2,3>。最好的方法是什么?目前,我有以下脚本:

command source > output
command2 output &
command3 output &

输出文件约为 100G,次优方法是分别通过管道传输到命令 2 和命令 3。我认为可以更高效地完成。

答案1

在bash中:command source | tee >(command2) >(command3)

stackoverflow 问题。我还没有尝试过这种输出巨大的方法。

答案2

其他答案介绍了这个概念。 这是一个实际的演示:

$ echo "Leeroy Jenkins" | tee >(md5sum > out1) >(sha1sum > out2) > out3

$ cat out1
11e001d91e4badcff8fe22aea05a7458  -

$ echo "Leeroy Jenkins" | md5sum
11e001d91e4badcff8fe22aea05a7458  -

$ cat out2
5ed25619ce04b421fab94f57438d6502c66851c1  -

$ echo "Leeroy Jenkins" | sha1sum
5ed25619ce04b421fab94f57438d6502c66851c1  -

$ cat out3
Leeroy Jenkins

当然你也可以> /dev/null用 out3 来代替。

相关内容