添加尾部行为,其中 Enter 会在 less 中添加空行

添加尾部行为,其中 Enter 会在 less 中添加空行

我喜欢less,我可以使用它通过+F标志(或ShiftF热键)跟踪日志、向前和向后搜索,并且通常在文档中自由移动。

但是 中缺少一件事less:通常我在文件末尾,我想看到新的事情发生。tail -f我只需点击enter几次,新的日志行就会与旧行明显分开。

可以将其添加到 吗less? 怎样添加?

答案1

这实际上不是tail的行为——而是终端的行为。Tail 只是将输出流发送到 stdout,然后发送到您的终端,然后您通过按 Enter 在该输出中间插入空行。Tail 本身实际上根本不接受您的输入。您可以输入任何其他内容,它们也会显示出来。

less但是,它是一个控制台应用程序,它接受输入并对其进行处理。它使用终端控制序列来管理控制台,这就是您可以滚动的方式。让您在流中插入任意字符会弄乱显示,而且 less 无论如何都会使用您的输入来控制程序。

不幸的是,它似乎没有办法直观地标记当前位置。不过,这并不是一个糟糕的功能请求,而且仍会不时获得新功能。

答案2

我在为自己寻找同样的答案时发现了您的问题。

对被接受的答案感到失望,我想出了一个解决方法。虽然不太理想,但它允许我在跟踪的日志中标记我的位置less,这就是重点所在。

我创建了一个小型可执行脚本(我称之为marklog),其中包含以下内容,并将其放在我的路径中:

#!/bin/sh
echo >> $1
echo >> $1
echo >> $1
echo `date` ---------------------------------------------------------------------- >> $1
echo >> $1
echo >> $1

当然,这只有在您拥有日志文件的写入权限时才有效——这在许多情况下可能会成为交易障碍。我还创建了这个版本,我用它来写入不属于我的日志文件(但我有 sudo 访问权限):

#!/bin/sh
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo `date` ------------------------------------------------------------------------- >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"

这些脚本正好提供了我所寻找的那种视觉突破。至少有 3 种方法可以使用它们:

  1. 在使用时,您通常会按几次回车键tail -f,而是从另一个终端运行marklog(提供日志文件的路径作为参数)。

  2. 使用CtrlZ暂停less,这样您就可以在同一个终端窗口中运行脚本,但是当您重新前台显示lessfg当然使用)时,它将不再处于“跟随”模式,因此您需要ShiftF再次点击...

  3. 最后——这可能是最方便的方法,因为您不需要输入日志文件的路径:通过键入marklog直接从运行。将用 替换当前文件名。但是,在“跟随”模式下不会响应 !,因此您必须先点击 退出跟随模式,然后运行 ​​,再一次。less!marklog %Less%lessCtrlC!marklog %ShiftF

使用方法 3,您还可以获得 Less 的命令历史记录的额外好处:只需点击!,然后使用向上箭头选择最近的命令(对我来说,它始终是marklog)。

希望这对其他人也有帮助,就像对我有帮助一样。

答案3

在文件末尾按下Shift+ ,less 将开始工作。Ftail -f

答案4

Lambart 的回答让我找到了我最喜欢的解决方案。感谢 Lambart!

只需输入跟随模式ctrlc并输入!printf "\n\n---$(date)---\n\n" >> %。之后您必须再按enter一次并点击shiftf才能再次开始跟随文件。

相关内容