如果我做类似的事情,给定一个文件 input.txt
grep pattern1 input.txt | grep pattern2 | wc -l
第一个命令的输出是否连续传递(一旦生成)作为第二个命令的输入?
或者管道是否等到第一个命令完成才开始运行第二个命令?
最佳答案
是的,它们是流水线式的——每个组件的标准输出都通过 FIFO 连接到下一个的标准输入,并且所有组件都是并行启动的。
这就是为什么
cat some-file | ...tools... >some-file
...通常会导致文件被截断:因为管道是一次性启动的,所以最后一段(截断
some-file
以进行写入)发生在 cat
完成(或经常甚至开始)从输入读取文件之前。关于linux - linux shell 管道是流水线的吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37620131/