跟随管道使用较少?

hae*_*lix 31 less pipe tail

可以更少地跟随(按 F)管道输入(类似于文件)吗?对于正在写入的文件,命令

less <file>
Run Code Online (Sandbox Code Playgroud)

按 F 时将跟随文件。

但是如果我有一个命令将输出直接输入到less中,就像这样

command | less
Run Code Online (Sandbox Code Playgroud)

按 F 什么也不做。

所以看起来管道不能像文件一样被跟踪?或者它可能与写入 STDERR 的命令有关?我想要达到的效果总是看到命令的最新输出:就像按住 PageDown 一样!

一个相关的评论适用于 G(转到结尾):当直接管道到 less 时,它将不起作用。

mik*_*mik 26

FG品牌less力争达到输入EOF。如果输入是管道,则less挂起直到管道在另一侧关闭(而不是“什么都不做”)。

这可以通过将命令输出保存到后台的临时文件来解决,然后将其用作以下内容的输入less

command > /tmp/x &
less +F /tmp/x; kill %; rm /tmp/x
Run Code Online (Sandbox Code Playgroud)

没有选项只能这样做less;但是,我承认它会很有用。

  • 在管道输入“less”上按 F 或 G 后,不仅会阻塞读取,还会在循环中等待 EOF。并且管道上的 EOF 仅在其另一侧关闭时才会发生。 (3认同)
  • 如果`less` 会在那个循环中更新屏幕,就不会有问题。阻塞读取与此问题关系不大。 (3认同)

Pio*_*ost 9

可以更少地跟随(按 F)管道输入(类似于文件)吗?

是的,从版本 474 开始。

相关:有没有办法在不停止管道中的其他进程的情况下退出“较少”跟随模式?

作为参考,F 不使用管道的问题在已知错误列表中的参考编号为 300,标题为“F 命令不适用于管道输入”。


一个相关的评论适用于 G(转到结尾):当直接管道到 less 时,它将不起作用。

它从版本 466 开始工作。引用此版本的发行说明

新命令 ESC-G 转到管道中当前缓冲数据的末尾