watch
命令,但是它有其局限性。我很好奇我是否可以用
watch
模仿less
的功能。我主要是希望能够通过正在运行的脚本动态修改目录来滚动目录。#1 楼
在less
中,您可以键入F
以继续读取文件末尾(例如tail -f
);您可以键入:e
和文件名来查看其他文件,但是不幸的是,如果输入当前文件的名称,则less
不会重新加载该文件。但是,有一个技巧可以让它重新读取当前文件,这是萨布根顿建议的:键入:e
,然后输入不存在的文件的名称;导致较少显示错误消息,然后重新加载当前文件。如果您正在寻找
watch ls
的替代产品,请参考以下内容: >现代文件管理器(例如Nautilus,Thunar,Konqueror,Dolphin,Finder)实时刷新视图。Emacs没有实时刷新,但是使用
auto-revert-mode
时,它将每5秒重新加载文件或目录一次。 (延迟是可配置的)。尽管w3m主要是Web浏览器,但它使目录和文本文件查看器成为可传递的目录。按
R
重新加载(本地)URL。评论
对我来说:e randomnamejkdlfjldf无法加载不存在的文件名,然后重新加载回当前文件:D
–sabgenton
16 Mar 18 '16 at 10:36
@sabgenton谢谢,我不知道。真是个绝招。我已将其添加到我的答案中,但是您可以将其发布为您自己的答案(我希望Zaid可以接受)。
–吉尔斯'所以-不再是邪恶的'
16年3月18日在16:14
@CMCDragonkai不,少+ F只注意附加内容。使用:e nonexistentfile重新读取完全更改的输入。
–吉尔斯'所以-不再是邪恶的'
16年4月19日在11:08
有命令行标记吗?
– CMCDragonkai
16年4月19日在11:18
@PaulWagland不,R无法可靠地刷新文件。它刷新了屏幕,并擦除了一些输入缓冲区,但实际上并不能在所有情况下都从文件中重新加载数据(仅当文件很大时?我没有深入研究代码)。
–吉尔斯'所以-不再是邪恶的'
17年4月20日在9:53
#2 楼
Shift + F将使less
与tailf
相似。也就是说,如果将更多数据附加到文件,则会刷新该文件。评论
请注意,这仅适用于追加。如果行被删除或就地编辑,则更少的行不会显示这些更改。
– Nathaniel M. Beaver
16年11月30日在1:26
如何停止跟随模式并重新进入滚动模式?
–汤姆·黑尔
17年2月9日在12:18
Ctrl + C
– Balki
17年2月9日在20:41
balki我的经验是,如果使用$ COMMAND | | | | | | | | | | | | | | |,-,-,-,-,-,-,-,-减。我想知道是否有解决这个问题的好方法?您可以执行类似$ COMMAND> / tmp / file和更少的/ tmp / file这样的操作,但这不是很好。
– Att Righ
18年7月27日在11:13
@AttRigh我从来没有杀死过我的命令(但是我以这种方式读取正在运行的命令的日志,从技术上讲,我不会减少内容)
–耶拿
19年1月11日在13:48
#3 楼
只需键入:less +F filename
,这将在编辑器中模拟按“ F”键。
评论
谢谢;在我的.bashrc中添加了别名别名check =“ less + F”。
–卢克·戴维斯(Luke Davis)
17年7月27日在21:31
#4 楼
man
页面可能会非常有用。不要被他们吓倒。除其他事项外,man less
表示您可以使用R
命令执行以下操作: R Repaint the screen, discarding any buffered input. Useful if the file is changing while it is being viewed.
(我知道这个问题已有6年历史了,但是在Google搜索中出现了所以我不是唯一一个点击链接即可到达此处的人。)
评论
万一被另一个程序的输出打乱了屏幕,它会重新绘制屏幕。它不会一致地重新加载文件。我没有深入研究代码以了解其作用,实验上较短的文件不会重新加载。我绝对不会被手册页吓倒,我说的描述措辞很差:“重新绘制”并不表示输入已被重新读取,并且实际行为并不十分适合“如果文件正在更改”(可能是bug?我不知道,因为我不知道该命令应该做什么。
–吉尔斯'所以-不再是邪恶的'
17-4-20在9:51
我不是专家,也没有读过更少的源代码,但是这样做是忘记了它已经知道的关于文件的知识并重新加载它,并根据重新加载的输入刷新其输出。问题显示为“是否有办法动态刷新less命令?”如果在回答之前我已经更彻底地阅读了问题的解释,那么我可能还没有回答,因为他们继续说,他们希望“在目录中滚动,因为它是通过运行的脚本动态修改的”。少将不是正确的命令。
–丹尼斯·埃森森(Dennis Estenson)
17年4月21日在3:58
即使使用3字节长的文件,对我来说也很好用。我无法想象为什么它也不适用于较大的文件。
–艾迪生
18-3-22在3:51
大!对我来说,它适用于长文件和短文件。我只是注意到了两个可能的问题:1.较少的是不使用文件名重新打开文件-即,当文件的inode更改时(例如,使用mv覆盖文件),则旧文件内容保持不变(可能是重新读取了旧的inode) --- 2.显示的第一行可能与原始文件内容中的字节偏移相同。因此,当行长更改时,第一条显示的行可能不完整,并且显示的行可能会上下移动。
– pabouk
18/09/13在11:27
R并不总是有效。参见unix.stackexchange.com/questions/4351/…
– Wisbucky
19年4月17日在19:18
#5 楼
用于重绘的R
并不总是重新加载文件。[1] 总是重新加载文件的解决方法是按
hq
,这将打开“帮助”页面,然后退出。它具有强制重新加载文件的副作用。[1]以下是
R
可以重新加载和不重新加载的情况的一些示例:>
和>>
的更改:请重新加载sed -i
,gEdit,TextEdit:不要重新加载在Linux上,
vi
的更改:请重新加载在Mac上,
vi
发生了变化:请勿重新加载我相信区别在于inode是否发生了变化(您可以使用
ls -i foo.txt
进行检查)。如果inode更改,则R
将不起作用。评论
我真的很喜欢总部黑客,但是请注意,如果您碰巧正在查看变得更短的文件的末尾,则失败的机会会更少。 (确实,如果您正好在新文件结尾之后的任何位置被搜索),再加上一个键,就可以避免崩溃:ghq。
–雕刻师
19年10月10日在1:09
#6 楼
我通常只键入G一次拖尾输出。我发现它在像CIFS这样的网络文件系统上特别有用。评论
这更多地是按需刷新的文件,打开时所花费的时间更少。除了跳转到文件末尾之外,如果文件已更改,它还会重新加载文件。
–jorb
17年6月6日在13:23
谢谢。第一次对我来说并没有刷新,但现在看来可以正常工作。在这个人中,没有刷新文件的记录。 man less:'G或>或ESC->转到文件中的N行,默认为文件末尾。我在这里删除了我以前的错误评论,对不起。
–雅罗斯拉夫·尼基琴科(Yaroslav Nikitenko)
17年6月8日在13:56
顺便说一句,您怎么称呼“一次性”? Less的维护者Mark Nudelman回答:“ G命令通常不像R命令那样强制重新读取文件。如果在以下情况下尚未读取文件末尾,则似乎可以这样做:调用G,因此跳转到文件末尾必须是第一次读取该数据,例如,如果跳转到G末尾,然后又跳回到1G开头,那么另一个程序将修改数据在文件末尾(不更改长度),“(续)
–雅罗斯拉夫·尼基琴科(Yaroslav Nikitenko)
17年6月12日在20:14
(续)“然后,您再次使用G跳到末尾,您将看不到修改后的数据。但是,如果您没有跳到末尾并回到开头,那么第一次执行G命令时,它必须读取第一次在这里存储数据,当然,它将看到自第一次调用less以来发生的任何修改。”
–雅罗斯拉夫·尼基琴科(Yaroslav Nikitenko)
17年6月12日在20:14
在这种情况下,我提到这是一次刷新,而不是动态刷新,这是原始问题的一部分。
–jorb
17年6月12日在20:31
#7 楼
运行less
时,按“ F”键将执行与tail -f
类似的“跟随”操作,但是我不确定这是否可以实现您在此处寻找的功能。#8 楼
您可以使用vim读取文件,然后将以下映射添加到.vimrc
文件中,并且可以轻松地使用,r重新加载文件:let mapleader = ","
nnoremap <leader>r :edit <CR>
请注意,如果您编辑了文件已经存在,vim会抱怨。只需更改为
let mapleader = ","
nnoremap <leader>r :edit! <CR>
即可忽略更改。
评论
他们将不得不从冷死的手中撬开vim。这个问题的内容要少得多,但是作为一个自己患有单躁狂倾向的人,我表示同情!
–本杰明·R
18-10-26在16:05
#9 楼
您可以将其通过管道传输到tail -f
,这将导致您跟踪输出。但是,您将失去在输出中移动(滚动)的功能。#10 楼
我只是像其他任何人一样找到了该线程。 br />我最终在我的终端程序(SecureCRT)中为此创建了一个宏按钮。
该宏就是'gG'。
评论
我在寻找tail -f foo.log | grep栏,并能够通过重新启动tail / grep管道来动态更改grep命令。