コマンドで独自のコマンドを実行できるかどうか疑問に思っていましたless
。つまり、ファイルを開いてless
、画面をそのままにしたまま、表示されている内容 (または必要な場合はファイル全体) に対して独自のコマンドを実行できるということです。たとえば、現在表示されている内容をさまざまな方法で色付けしたり、ファイル内の特定の行を表示/非表示にするさまざまなスクリプトを実行できるようにしたいのです。
毎回異なる実行を行えることはわかっていますcat <file> | my-script | less -R
が、それだとエディターのようなエクスペリエンスは得られませんless
。
答え1
|
less のコマンドを使用して、ファイルを別のプログラムにパイプすることができます。
- プレス
|
。 - マーク文字または
^
または$
または を入力します.
。 - 実行するシェルコマンドを入力します。
- プレスEnter。
現在の位置とマークの間のファイル部分のみがパイプされます。マークは、それぞれファイルの先頭と末尾を意味する^
または、あるいはコマンドで定義された位置のいずれかです。現在の位置は、マークがそれより前であれば画面の の行であり、そうでない場合は画面の一番下の行です。特に、ファイル全体をパイプするには、 または を使用して、位置をファイルの一方の端に設定し、マークをもう一方の端に設定します。画面に表示されている行だけをパイプするには、マーク を使用します。$
m
<|$mycommand
>|^mycommand
.
コマンドの出力は画面上に残りません。less で出力を参照したい場合は、別のインスタンス ( など) を起動する必要がありますrot13 | less
。less の 2 番目のインスタンスを終了すると、最初のインスタンスに戻ります。現在のインスタンスの内容を、そこからパイプされたデータで置き換える方法はありません。色を表示するには、 を実行することを忘れないでくださいless -R
。