linux - 为什么这个命令管道在 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 线
解决方案
稍等片刻。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
推荐阅读
- numpy - numpy - 有没有办法将 sum() 用于迭代追加到数组
- dataweave - 如何在dataweave中转换子项
- javascript - 尽管来自公共 API 的“Access-Control-Allow-Origin: *”,但访问被 CORS 阻止的图像
- javascript - 如何使用 Webpack 捆绑 Express Js (NodeJs) 和 Pug 引擎?
- python - 如何在 mayavi 中获得轴接地
- file-upload - 了解 HLS 实施?
- mysql - 如何在更新语句中将列值添加到 Mysql 中的设置变量?
- arrays - 从数组内部的数组中解析数据并根据 FLUTTER 中映射值的条件创建新列表
- flutter - 手势捕获的异常。在 null 上调用了 getter 'email'
- javascript - 达到理解高阶组件语法