unix命令' tail'丢失选项' - 行缓冲'

时间:2013-08-14 08:59:42

标签: unix streaming tail

随着我们的SuSE Enterprise Linux 11的最新更新(现在为bash 3.2.51(1)-release),命令“tail”似乎已经失去了流文件的选项:

tail: unrecognized option '--line-buffered'

我们的尾巴来自“GNU coreutils 8.12,2013年3月”。还有另一种等效的解决方案吗?

1 个答案:

答案 0 :(得分:6)

就简单的谷歌搜索而言,tail似乎没有--line-buffered选项,grep可以。即使在写入非TTY时,--line-buffered也可用于强制行缓冲,这是一个典型的习惯用语:

tail -f FILE | grep --line-buffered REGEXP > output

此处--line-buffered的要点是阻止grep缓冲8K块中的输出并强制匹配的行立即出现在输出文件中。

无论输出类型如何,

tail -f都是无缓冲的,因此它不需要--line-buffered选项等同于grep中的选项。这可以通过运行tail -f somefile | cat并从另一个shell向该文件追加一行来验证。人们观察到,尽管标准输出是管道,tail立即刷新新到达的线路。