为什么此命令管道在 Debian 或 Mac 上不打印任何内容?

Why does this command pipe prints nothing on Debian or Mac?

此命令每秒打印十次直到 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 线

稍等片刻。 mac os 在打印整个块之前等待缓冲区填满。

如果你确实想要立即逐行输出,你可以将“--line-buffered”标志添加到两个 grep 命令,有效地使你的命令 -

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

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