Pipe

使用更少的管道?

  • March 19, 2022

less 可以跟隨(通過按 F)管道輸入(類似於文件)嗎?對於正在寫入的文件,命令

less <file>

按 F 時將跟隨文件。

但是,如果我有一個將輸出直接通過管道傳輸到 less 的命令,就像這樣

command | less

按 F 不會有任何作用。

所以看起來管道不能像文件一樣被遵循?或者可能與寫入 STDERR 的命令有關?我想要達到的效果總是看到命令的最新輸出:就像按住 PageDown 一樣!

一個相關的評論適用於 G (go to end):當管道直接到 less 時,它不會工作。

FG嘗試less到達輸入 EOF。如果輸入是管道,則less掛起直到管道在另一側關閉(而不是“什麼都不做”)。

這可以通過將命令輸出保存到後台的臨時文件中來解決,然後將其用作以下內容的輸入less

command > /tmp/x &
less +F /tmp/x; kill %; rm /tmp/x

沒有選項只能這樣做less;但是,我承認它會很有用。

less 可以跟隨(通過按 F)管道輸入(類似於文件)嗎?

是的,從版本 474 開始。

相關:有沒有辦法在不停止管道中其他程序的情況下退出“更少”跟隨模式?

作為參考,F 不使用管道的問題在已知錯誤列表中的參考編號為 300,標題為F 命令不適用於管道輸入。


一個相關的評論適用於 G (go to end):當管道直接到 less 時,它不會工作。

它從版本 466 開始工作。引用此版本的發行說明

新命令 ESC-G 轉到管道中目前緩衝數據的末尾

引用自:https://unix.stackexchange.com/questions/26826