unix命令'tail'丢失选项' - line-buffered'

Ale*_*häl 0 unix streaming tail

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

tail: unrecognized option '--line-buffered'
Run Code Online (Sandbox Code Playgroud)

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

use*_*342 6

就简单的谷歌搜索而言,tail似乎没有--line-buffered选择权grep.--line-buffered即使在写入非TTY时强制行缓冲也很有用,典型的成语是:

tail -f FILE | grep --line-buffered REGEXP > output
Run Code Online (Sandbox Code Playgroud)

这里的要点--line-buffered是防止grep以8K块缓冲输出并强制匹配的行立即出现在输出文件中.

tail -f无论输出类型如何都是无缓冲的,因此它不需要--line-buffered与之相当的选项grep.这可以通过tail -f somefile | cat从另一个shell 运行并向该文件追加一行来验证.人们观察到,尽管其标准输出是管道,但tail立即冲洗新到达的线路.

  • @TommiKyntola 很好,我现在已经更正了响应中的错误声明。 (2认同)