我喜欢less
,我可以使用它通过+F
标志(或ShiftF热键)跟踪日志、向前和向后搜索,并且通常可以在文档中自由移动。
但是其中缺少一件事less
:通常我在文件的末尾,我想看到新的事情发生。在tail -f
我只需点击enter几次,新的日志行就会与旧行清楚地分开。
是否可以将其添加到less
?如何?
我喜欢less
,我可以使用它通过+F
标志(或ShiftF热键)跟踪日志、向前和向后搜索,并且通常可以在文档中自由移动。
但是其中缺少一件事less
:通常我在文件的末尾,我想看到新的事情发生。在tail -f
我只需点击enter几次,新的日志行就会与旧行清楚地分开。
是否可以将其添加到less
?如何?
这不是真正
tail
的行为——这是终端。Tail 只是将输出流发送到 stdout,它会到达您的终端,然后您通过按回车键在该输出的中间插入空行。Tail 本身实际上根本不接受您的输入。您可以输入任何您想要的内容,它们也会显示出来。less
但是,它是一个控制台应用程序,它接受输入并对其进行处理。它使用终端控制序列管理控制台,这就是您可以滚动的方式。让您在流中插入任意字符会弄乱显示,无论如何 less 使用您的输入来控制程序。不幸的是,它似乎没有办法在视觉上标记当前位置。不过,这并不是一个糟糕的功能请求,而且 less仍然会不时获得新功能。
我在为自己寻找相同答案时发现了您的问题。
对接受的答案感到失望,我想出了一个解决方法。它不太理想,但它允许我在我正在跟踪的日志中标记我的位置
less
,这就是重点。我创建了一个包含以下内容的小型可执行脚本(我称之为
marklog
),并将其放在我的路径中:当然,这只有在您对日志文件具有写入权限时才有效——在许多情况下这可能会破坏交易。我还创建了这个版本,我用它来写入我不拥有的日志文件(但我有 sudo 访问权限):
这些脚本恰好提供了我一直在寻找的那种视觉中断。您至少可以通过 3 种方式使用它们:
在使用 时通常按几次 Enter 的地方
tail -f
,而不是marklog
从另一个终端运行(提供日志文件的路径作为参数)。使用CtrlZ暂停
less
以便您可以在同一终端窗口中运行脚本,但是当您重新进入前台时less
(fg
当然使用 ),它将不再处于“跟随”模式,因此您需要ShiftF再次点击...最后——这可能是最方便的方法,因为您不需要输入日志文件的路径:通过输入
marklog
直接运行。将用当前文件名替换. 但是,不会回应!当它处于“跟随”模式时,所以你必须先点击退出跟随模式,然后再运行。less
!marklog %
Less
%
less
CtrlC!marklog %
ShiftF使用方法 3,您还可以获得 Less 的命令历史记录的额外好处:只需点击
!
,然后使用向上箭头选择最近的命令(对我来说,它总是marklog
)。希望这对已经帮助过我的人有帮助。
在文件末尾按Shift+ F,less 将开始作为
tail -f
.我不认为你能做到这一点。我已经使用
m
并'
标记了感兴趣的地方,然后再次转到它们,但这并没有给你你所要求的分离。也许像 multitail 这样的东西会做你想做的事。Lambart 的回答让我想到了我最喜欢的解决方案。谢谢兰巴特!
只需输入跟随模式ctrlc并输入
!printf "\n\n---$(date)---\n\n" >> %
。之后,您必须再按enter一次并点击shiftf文件以重新开始。