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月".还有另一种等效的解决方案吗?
就简单的谷歌搜索而言,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立即冲洗新到达的线路.