首页 > 解决方案 > 为什么这个命令管道在 Debian 或 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 线

标签: linuxbashmacosgrepping

解决方案


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

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

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

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


推荐阅读