随着我们的SuSE Enterprise Linux 11的最新更新(现在为bash 3.2.51(1)-release),命令“tail”似乎已经失去了流文件的选项:
tail: unrecognized option '--line-buffered'
我们的尾巴来自“GNU coreutils 8.12,2013年3月”。还有另一种等效的解决方案吗?
答案 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
立即刷新新到达的线路。