【问题标题】:Why does this command pipe prints nothing on Debian or Mac?为什么这个命令管道在 Debian 或 Mac 上什么也不打印?
【发布时间】:2020-06-29 20:14:11
【问题描述】:

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

【问题讨论】:

  • 试试grep --line-buffered ...

标签: linux bash macos grep ping


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多