重复打开一个截断的文件,而跟随一个文件less

有时我会在日志文件上运行一个less +F ,然后截断。 我不想意识到该文件已被截断,并开始按照现在的文件。 目前,我被迫做了以下事情:

  1. (terminal1)> less +F my-file.txt
  2. (terminal2)> printf "" > my-file.txt
  3. (terminal1)>退出less
  4. (terminal1)>重新启动less: less +F my-file.txt

每次我截断文件(每天几十次 ),我必须执行步骤3-4。 这真是一个痛苦。

我想要做:

  1. (terminal1)> less +F my-file.txt (以及其他需要的选项)
  2. (terminal2)> printf "" > my-file.txt

就是这样。 less会自动意识到该文件已被截断,并从头开始跟随新文件。

这可能吗? 我应该less用什么标志来达到这个目的?

不是你正在寻找的答案,但你可以尝试使用“ 尾巴-F ”(而不是“ 尾巴-F ”),这将给你你正在寻找的行为。

你为什么不把它们组合起来呢?

tail -F filename | tee | less

这对我很好。

你想指定--follow-name参数为less 。 从手册页 :

通常情况下,如果在执行F命令时重命名input文件,那么即使更改了名称,也会继续显示原始文件的内容。 如果指定了–follow-name,则在F命令期间,less会定期尝试按名称重新打开该文件。 如果重新打开成功,并且文件是与原始文件不同的文件(这意味着已经创build了与原始文件(现已重命名)文件相同名称的新文件),则会显示新文件的内容。

所以你现在的步骤是:

  1. (terminal1)> less --follow-name +F my-file.txt
  2. (terminal2)> printf "" > my-file.txt
  3. (terminal1)>享受!

PS而不是使用printf,只有redirect操作符: > my-file.txt才会截断大量的shell