微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux shell管道是否流水线?

给定一个文件input.txt,如果我做的话

grep pattern1 input.txt | grep pattern2 | wc -l

一个命令的输出是否连续传递(一旦生成)作为第二个命令的输入?

或管道是否等到第一个命令完成后才开始运行第二个命令?

解决方法:

是的,它们是流水线的 – 每个组件的stdout通过FIFO连接到下一个stdin,并且所有组件都是并行启动的.

这就是为什么

cat some-file | ...tools... >some-file

…通常导致截断文件:因为管道是一次性启动的,所以最后一块(截断某些文件用于写入)发生在cat完成(或经常,甚至开始)从输入读取文件之前.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐