私はしばしばless
出力(たとえば、コンパイラエラー)を読み取るためにコマンドをパイプします。
MyCommand | less
これは大量の出力を簡単にトロールできるため、優れていますが、終了するとless
出力が消えます。 lessを終了した後でも出力を表示し続けるには?
この質問は次のように異なります。プログラムの出力をリダイレクトして標準出力に送信する方法はありますか?この質問はを介してテキストファイルに出力することに関連しているので、tee
私が知っている限り、less
出力をstdout
。
答え1
使用less -X
:
termcap初期化と初期化解除文字列を端末に送信することを無効にします。
これにより、改ページの前後に画面にテキストが残ります。だから:
command | less -X
お好みの効果を得ることができます。上にスクロールすると、この出力はまだ間違っています(重複行)。これは、ファイルが記録されない限り避けられないことです。
すべての呼び出しでデフォルトでこれを実行するLESS
値を含めるように環境変数を設定することもできます。X
less
ファイルを使用せずにファイルに書き込むには、またはオプションをtee
使用できます。less -o filename
--log-file=filename
答え2
あなたはそれを使用することができます:
command | tee filename.out | less
lessコマンドを実行した後でも出力を確認する必要がある場合は、エディタでfilename.outを確認してください。
別のアイデアは、愚かな端末タイプを使用するように用語設定を変更することです。これを試してください。
答え3
問題が終了時に「画面を消去する」より少ない場合は、開始および停止時に端末/termcap init/de-init文字列を送信しないようにlessに指示することで、この動作を回避できます。を使用してこれを行うことができます-X
。だから一度試してみてくださいcommand | less -X
。
これらの文字列が実際に必要な操作を実行すると、他の副作用がある可能性がありますが、それが起こらないことを願っています。
答え4
more
代わりにそのコマンドを試してみることもできますless
。それでも出力をページングして見やすくスクロールできますが、最終的に端末は何もパイプされていないかのように出力を維持します。