我想读取整个文件并使其等待输入,就像tail -f 显示完整文件一样。
该文件的长度将始终更改,因为这是一个.log文件。
如果我不知道文件的长度,该怎么办?
less具有“ F”键。如果需要交互,很有用。
我想读取整个文件并使其等待输入,就像tail -f 显示完整文件一样。
该文件的长度将始终更改,因为这是一个.log文件。
如果我不知道文件的长度,该怎么办?
less具有“ F”键。如果需要交互,很有用。
Answers:
tail可让您添加-n以指定要从末尾开始显示的行数,该行数可与结合使用-f。如果该参数-n与开始+即从线的计数开始(0和1显示整个文件,2指示跳过第一行,通过@Ben所指示的)。所以做:
tail -f -n +0 filename
如果您的日志文件会旋转,你可以添加--retry(或组合-f and --retry成-F如@Hagen建议)
还要注意,在图形终端中,您可以使用鼠标和PageUp/ PageDown滚动回到历史记录(假设您的缓冲区足够大),即使您使用Ctrl+ C退出,此信息也将保留在那里tail。如果您less不方便使用AFAIK,则必须使用键盘进行滚动,less如果忘记了以术语开头的话,我不知道有一种方法可以避免对termcap进行初始化-X。
+)的实施效率更高,我不会感到惊讶。
+1为我教+0。您可能想要-F而不是-f轮换日志文件
tail -n +1为我显示了文件的开头,并tail -n +2跳过了一行。我认为数字是显示的第一行的行号。
有一种更好的方法可以实现此目的:
less +F <file>
它会向您显示整个文件,具有完整的功能,less并会等待新的输入。如果要停止等待输入并阅读特定部分,可以使用停止^C并继续F。
该F命令是始终可用less,如果你决定,同时具有文件打开在观看更改less,击中F将其打开。感谢hiergiltdiestfu和通配符指出这一点。
tail。谢谢你的提示; 我永远也不会想到要使用less它。其他提示:您也可以只运行less <file>然后输入F。
除了/ u / Anthon的答案,您还可以执行以下操作:
{ cat filename; tail -0f filename; }
该-0选项以尾相当于-n 0,意思是:dispaly 0行。但-f将显示新行。
您不需要括号{ }。我之所以使用它们,是因为有时您想以某种方式重定向文件描述符。例如:
{ cat ; tail -0f -; } < /var/log/messages
本·米尔伍德(Ben Milwood)指出:您可能处于竞争状态,其中文件在cat操作结束和操作开始之间增长tail。但这又是学术解决方案的“学术”问题。
cat完成和tail开始之间增长,则不会看到这些行。可能没什么大不了的,但却是偏爱纯tail解决方案的原因。
{ cat; tail -n +0 -f; } < file这会解决问题,因为tail会打印出现在cat退出和tail启动之间的所有新数据。当然,它使cat冗余。重定向仅发生一次,并且tailstdin是cat已经读取到EOF的文件描述符,因此其当前位置在此位置cat。您可以通过将放入echo foo >> file内部来进行测试{},以每次创建比赛。
watch 命令应该为您做到这一点。
您也可以尝试
less +FG
less当您说文件很大时,可以通过命令使用更多选项来滚动浏览文件。
+F选项的选择