我想读取整个文件并使其等待输入,就像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
冗余。重定向仅发生一次,并且tail
stdin是cat
已经读取到EOF的文件描述符,因此其当前位置在此位置cat
。您可以通过将放入echo foo >> file
内部来进行测试{}
,以每次创建比赛。
watch
命令应该为您做到这一点。
您也可以尝试
less +FG
less
当您说文件很大时,可以通过命令使用更多选项来滚动浏览文件。
+F
选项的选择