(ファイルと同様に)パイプで連結された入力を(Fを押すことで)より少なく追跡できますか?書き込み中のファイルの場合、コマンド
less <file>
fキーを押すと、ファイルを追跡します。
しかし、次のように、出力を直接lessにパイプするコマンドがある場合
command | less
fを押しても何も起こりません。
だから、ファイルのようにパイプを追跡できないように見えますか?または多分それはSTDERRへの書き込みコマンドにも関係していますか?私が達成しようとしている効果は、常にコマンドの最新の出力を表示することです:PageDownを押したままのように!
G(最後に移動)に関連する注釈があります。lessに直接パイプすると、機能しません。
押す F または Gless
に入力EOFへの到達を試みさせます。入力がパイプの場合、less
は、パイプが反対側で閉じられる(「何もしない」)までハングします。
これは、コマンド出力をバックグラウンドで一時ファイルに保存し、less
の入力として使用することで回避できます。
command > /tmp/x &
less +F /tmp/x; kill %; rm /tmp/x
less
のみでこれを行うオプションはありません。しかし、私はそれが役に立つと認めます。
(ファイルと同様に)パイプで連結された入力を(Fを押すことで)より少なく追跡できますか?
はい、バージョン474以降です。ただし、この機能には現在1つの問題が残っているため、どのバージョンのリリースノートにもまだ記載されていません。以下はlessのメンテナからのコメントです– Mark Nudelman:
パイプのFコマンドに関しては、less-474でも修正されています。 EOFにシークする代わりに、Fコマンドはバッファリングされた入力の終わりにシークし、そこから読み取りを開始します。ただし、CTRL-Cを押してFコマンドを停止すると、出力を生成するプロセスが強制終了されるため、実際には使用できません。それを修正する方法がわかりません。
この問題が修正されるまでは、シェル機能を使用して回避できます。詳細については、私の answer to パイプの他のプロセスを停止せずに「less」フォローモードを終了する方法はありますか?質問を参照してください。
参考までに、パイプが機能しないFの問題は、既知の バグ のリストに参照番号300があり、タイトルはFコマンドはパイプ入力では機能しません。
G(最後に移動)に関連する注釈があります。lessに直接パイプすると、機能しません。
バージョン466以降で機能します。このバージョンの リリースノート からの引用:
新しいコマンドESC-Gは、パイプで現在バッファリングされているデータの最後に移動します
Lessのmanページから
[Keyboard] COMMANDS [...]
F Scroll forward, and keep trying to read when the end of file is reached. Normally this command would be used when already
at the end of the file. It is a way to monitor the tail of a file which is growing while it is being viewed. (The behav‐
ior is similar to the "tail -f" command.)
これでうまくいくはずですが、実際に私にとってはうまくいきます。