为什么此命令管道在Debian或Mac上什么都不打印?

时间:2020-06-29 20:14:11

标签: linux bash macos grep ping

此命令每秒将直到g.co的毫秒数打印十次:

ping -i 0.1 g.co | grep ms

如果我仅添加另一个grep,它将不再打印任何内容(在Mac和Debian上均如此):

ping -i 0.1 g.co | grep ms | grep m

那是为什么?

yes | grep y | grep y

这确实可以打印出无限的y行序列

1 个答案:

答案 0 :(得分:0)

只需等待一段时间。在打印整个块之前,mac os等待缓冲区填满。

如果您确实希望立即逐行输出,则可以在两个grep命令中添加“ --line-buffered”标志,从而有效地使您的命令-

ping -i 0.1 g.co | grep ms-行缓冲| grep m-行缓冲

有关更多详细信息,请参阅另一个问题- bash: force exec'd process to have unbuffered stdout