ここにある私のDebianマシンでは、less
は常に代替画面を開いて内容を表示します。
表示する行が2行または3行しかない場合、これは煩わしいことです。 less
に次のことをお願いします:
画面一杯以上の情報がある場合は、ポケットベルとして機能します
ない場合は、cat
のように機能します。
どうやら、less
には「単一画面」の場合の-F
フラグがあります。
-Fまたは--quit-if-one-screen
ファイル全体を最初の画面に表示できる場合は、lessが自動的に終了します。
しかし、私の場合は再び終了するだけで、情報は表示されません。 cat /dev/null
に似ているため、あまり役に立ちません。
このless
の動作を実現する方法について、誰かアイデアがありますか?
-F
を-X
と組み合わせると、terminfoの初期化シーケンスが無効になります。
export LESS=-FX
これには、ファイルの長さに関係なく、less
が終了時に表示されたテキストをクリアしないという(不)利点があります。
言及 by grawity のように、これを達成するために-F -X
を渡すことができますが、これはless
がターミナルのスクロールバックに多くのテキストを残すことを意味します( less
)のテキストをジャンプすると、順序が正しくない場合もあります。 less
-F
のみを渡した場合、何も出力されません 既知の問題#3 。
代わりに、ラッパースクリプトを使用できます。 git log -Gregex
のような遅い入力の場合、次のようにしますか。
A)ラインが入ってくるとメイン画面に表示され、スクロールが必要になったら別の画面に切り替えます(したがって、出力の最初の$LINES
は常にスクロールバックに表示されます)。もしそうなら、 同様の質問に対するGillesの回答 の2番目に進みます。
B)代替画面に表示される行。ただし、スクロールが不要であることが判明した場合は、代替画面を終了して行をメイン画面に出力します(したがって、スクロールが必要な場合、スクロールバックに出力は表示されません)。もしそうなら、 同様の質問に対する私の答え を見てください。
次のような小さなラッパースクリプトを作成できます。
#!/bin/bash
if (( $(wc -l < "$1") < ${LINES:-20} ))
then
cat "$1"
else
less "$1"
fi
これを/usr/local/bin
または~/bin
でless2
のようなファイルとして作成する場合(入力を簡単にするためにl
のような非常に短い名前を使用することをお勧めします)。 chmod a+x /usr/local/bin/less2
で実行可能であることを確認してください。less filename
の形式のコマンド、つまりless2 filename
(またはl filename
)の場合は、less
の代わりに使用できます。 )。
別のコマンドの出力をless
にパイプしている場合、またはオプションや複数のファイル名を指定している場合、これは機能しません。
定義することにより、追加のスクリプトファイルなしで同じことを行うことが間違いなく可能になります エイリアス 必要に応じて、関数。