Answers:
这实际上不是tail
行为,而是终端。Tail只是将输出流发送到stdout,该输出流将发送到您的终端,并且您通过按Enter在该输出的中间插入空白行。尾巴实际上根本不接受您的输入。您可以键入其他任何内容,该内容也会显示出来。
less
但是,它是一个控制台应用程序,需要输入并进行处理。它使用终端控制序列来管理控制台,这是您可以滚动的方式。让您在流中插入任意字符将使显示混乱,并且无论如何,很少使用您的输入来控制程序。
不幸的是,它似乎没有办法在视觉上标记当前位置。但是,这并不是一个可怕的功能请求,并且很少会不时地获得新功能。
我在为自己寻找相同答案时找到了您的问题。
对于可接受的答案感到失望,我想出了一种解决方法。它不理想,但是它允许我在要跟踪的日志中标记我的位置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种使用方式:
在使用时,通常会按几次Enter键tail -f
,而不是marklog
从另一个终端运行(提供日志文件的路径作为参数)。
使用CtrlZ暂停less
,您可以在同一终端窗口中运行脚本,但是当您重新前景less
(fg
当然使用)时,它将不再处于“跟随”模式,因此您需要ShiftF再次点击...
最后-这可能是最方便的方法,因为您无需键入日志文件的路径:通过键入marklog
直接运行。会将当前文件名替换为。但是,不会响应!当它处于“跟随”模式时,因此您必须先打一下才能退出跟随模式,运行,然后再次。less
!marklog %
Less
%
less
CtrlC!marklog %
ShiftF
使用方法3,您还将获得Less的命令历史记录的额外好处:只需按一下!
,然后使用向上箭头选择最近的命令(对我来说,它始终是marklog
)。
希望这能对某人有所帮助。
在文件末尾按Shift+键F,少按将开始工作tail -f
。
tail -f
。具体来说,它将不会接受enter作为换行符,这是我的问题的 唯一要点。此外,我已经Shift+F
在问题中提到了(我必须说一个小错误)