プログラムを終了すると、「man」はどのように画面を復元しますか?


18

catまたはのようなプログラムのマニュアルページを開くと、マニュアルページのls内容が印刷され(適切な単語ではない場合があります)、を押すqと、manコマンドを呼び出す前と同じように画面が表示されます。復元はどのように行われますか?何がすべてを消去してから、シェルの以前の内容を印刷しますか?

例:

[VAR121@Tesla Testing]$  man ls

出力:

LS(1)                                                        User Commands                                                        LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

 ............

を押すqと、画面は以下に示すプロンプトのようなシェルのデフォルトの外観に戻ります。

[VAR121@Tesla Testing]$  man ls
[VAR121@Tesla Testing]$

画面はどのように復元されますか?

回答:


19

「クリア」は、画面には、実際に使用している端末エミュレータの機能である「復元」( 、xtermgnome-terminal、)。konsolescreen

デフォルトでは、man使用するページャーはですless

から man 1 man

   -P  pager
          Specify  which pager to use.  This option overrides the 
          MANPAGER environment variable, which in turn overrides 
          the PAGER variable.  By default, man  uses /usr/bin/less -is.

ときにless呼び出され、ALTSCREENは、manページの内容を表示するには、端末エミュレータで起動されます。ときにless終了するには、ALTSCREENが破壊され、端子ディスプレイはバッファに保存されたもの。

その答えがあり、ここで、これはさらに説明し、どのようなプログラムを維持するためにlessALTSCREENを起動するので、それが終了したときに、画面をクリアするからで。簡単に言えば、less呼び出し時にaltscreenを起動しないように環境変数を定義できます。bashを使用している場合、これを〜/ .bashrcに配置します。

export MANPAGER="/usr/bin/less -r -X -is"


1
同じ話viも?
VAR121

3
vimはターミナルエミュレータのaltscreenを優先します。〜/ .vimrc-"set t_ti = t_te ="にこのようなものを追加して、vimが使用する端末機能を変更できます。
ジョージM
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.