5

With the last update of our SuSE Enterprise Linux 11 (now bash 3.2.51(1)-release), the command "tail" seems to have lost its option to stream files:

tail: unrecognized option '--line-buffered'

Our tail is from "GNU coreutils 8.12, March 2013". Is there another, equivalent solution?

4

1 回答 1

9

就可以通过简单的谷歌搜索得知,tail似乎没有--line-buffered选择,grep确实。--line-buffered即使在写入非 TTY 时强制行缓冲也很有用,典型的习惯用法是:

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

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

tail -f无论输出类型如何,它都是无缓冲的,因此它不需要--line-bufferedgrep. 这可以通过tail -f somefile | cat从另一个 shell 运行并向文件附加一行来验证。有人观察到,尽管它的标准输出是管道,但它会tail立即冲洗新到达的管线。

于 2013-08-14T09:17:44.440 回答