終了時に画面が消えないようにするには? [コピー]

終了時に画面が消えないようにするには? [コピー]

私はしばしばless出力(たとえば、コンパイラエラー)を読み取るためにコマンドをパイプします。

MyCommand | less

これは大量の出力を簡単にトロールできるため、優れていますが、終了するとless出力が消えます。 lessを終了した後でも出力を表示し続けるには?

この質問は次のように異なります。プログラムの出力をリダイレクトして標準出力に送信する方法はありますか?この質問はを介してテキストファイルに出力することに関連しているので、tee私が知っている限り、less出力をstdout

答え1

使用less -X:

termcap初期化と初期化解除文字列を端末に送信することを無効にします。

これにより、改ページの前後に画面にテキストが残ります。だから:

command | less -X

お好みの効果を得ることができます。上にスクロールすると、この出力はまだ間違っています(重複行)。これは、ファイルが記録されない限り避けられないことです。

すべての呼び出しでデフォルトでこれを実行するLESS値を含めるように環境変数を設定することもできます。Xless

ファイルを使用せずにファイルに書き込むには、またはオプションを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。それでも出力をページングして見やすくスクロールできますが、最終的に端末は何もパイプされていないかのように出力を維持します。

関連情報