画面をクリアせずに「less」を終了する方法はありますか?

画面をクリアせずに「less」を終了する方法はありますか?

私はやめたいのですが、less画面で見たものを振り返って残す場合が比較的よくありました。これを行う方法はありますか?解決策?

(現在の解決策は終了してから使用することです。したがって、それよりも良い解決策は大歓迎です。理想的には、シェル設定や一部のスクリプトを介してmore一度入ると使用できます。)less

私のデスクトップはOSXですが、RHELとUbuntuサーバーを使用しています。

答え1

これは実際に使用している端末エミュレータ(xterm、gnome-terminal、konsole、screen)の機能です。プログラムを呼び出すlessか待機すると、代替画面または代替画面が実行されますvim。この代替画面には履歴バッファがなく、プログラムを終了するとすぐに終了し、元の画面に戻り、前のウィンドウの内容の履歴と場所が復元されます。

less「-X」引数を渡すと、代替画面で実行されないようにすることができます。

less -X /path/to/some/file

「-X」を環境変数として渡すこともできます。したがって、を使用している場合は、bash次のように入力してください~/.bashrc

export LESS="-X"

ただし、これによりtermcap(ターミナル機能)の初期化と初期化解除が無効になり、lessそれを使用すると他のビューが閉じられているように見える場合があります。

screen別のオプションは、でaltscreen offこれを行うことです~/.screenrclessこれにより、画面が消去されずにカラーフォーマットが維持されます。おそらくtmux同じ選択肢があります。

これブログエントリ問題を説明し、さまざまな成功事例でいくつかのソリューションを提供しますgnome-terminal

答え2

less -SEX出力を画面にダンプする必要がありましたが、改行を望んでいなかったときだったことを覚えています。たとえば、docker ps | less -SEX次のように動作します。

  • -S
    • ラッピングの代わりにスクロール
    • ドロップした場合は、-E矢印キーを使用してスクロールできます。
  • -E
    • EOFに達すると終了
  • -X
    • 用語交換/スペース防止
    • 「記憶」部分はSとEが何をしているのかを知っているということなので、他の部分であるに違いありません。 (このコマンドをメモリにコミットする理由は、ラップされていない出力をダンプ(対話型セッションに入る代わりに)したいからです。

覚えていなければless -SEX希望はあまりありません。私が推測するたびにもう一度Googleに検索してみてください。

答え3

Georgeの解決策は私には効果がありませんでしたが、この解決策はうまくいきました(fromブログエントリ彼の答えにつながっています)。

  1. $ infocmp -I xterm > ~/xterm-noclear.src

  2. ~/xterm-noclear.src 編集

    • 2行目の名前を「xterm」から「xterm-noclear」に変更するか、必要に応じて変更します(「xterm-debian」がある場合はそれも変更します)。

    • "smcup" および "rmcup" ディレクティブを削除します (例: "smcup=\E[?1049h," および "rmcup=\E[?1049l,"))

  3. $ mkdir ~/.terminfo

  4. $ tic ~/xterm-noclear.src(x/xterm-noclear は ~/.terminfo ディレクトリになければなりません)

  5. $ export TERM=xterm-noclear(これからlessの動作を確認して満足している場合は、〜/ .profileにエクスポートディレクティブ行を追加してください)

(@jahが編集を拒否したGeorgeの答えから直接この指示をコピーしました。)

答え4

より簡単な方法があります。 「cat」コマンドにコマンドを渡すだけです。

less blah.txt|cat 

「less」だけでなく、出力を印刷するために「新しい」端末を生成する他の同様のコマンド(git logなど)でも機能します。

関連情報