我想要做的事情非常简单 - 我希望监控文件并在文件更新时将其最后一行打印到屏幕上。据我所知,
tail -F -n 1 myfile.txt
应该做到这一点。但是,我得到了奇怪的行为:使用“原始”myfile.txt,命令工作正常,只有最后一行打印到屏幕上。但是,只要我通过添加新的文本行来改变myfile.txt,就会打印myfile.txt的全部内容 - 而不仅仅是最后一行。
我之前从未使用过尾巴,我可能会在这里遇到一些非常错误的东西,但肯定不是预期的行为?我有目的地使用-F标志,所以我可以手动更改myfile.txt - 这可能是它无法正常工作的原因吗?
非常感谢帮助...... 非常感谢!
答案 0 :(得分:0)
不,这就是意味着工作的方式,-n 1
是初始行为,只打印最后一行,但是-F
跟随文件超出了这一点,并且说得很清楚:
随着文件的增长输出附加数据;
换句话说,它输出 all 附加到文件的数据。
如果您检查source code,您会注意到main()
功能首先处理-n
选项,并且仅在结束时调用tail_forever()
,其中没有提及-n
提供的论据。
如果您执行:
( echo 1; echo 2; echo 3 ) >qq
在一个窗口中然后在另一个窗口中启动尾巴:
tail -F -n 1
你应该只获得3行。
如果您然后返回原始窗口并执行:
( echo 4; echo 5; echo 6 ) >>qq
你的第二个窗口应该只输出新的行(以及所有这三行)。
如果你的第二个窗口为你提供了所有六行,它就会被破坏。