GNU画面が終了したときに画面が消去されるのを防ぐ方法は?

GNU画面が終了したときに画面が消去されるのを防ぐ方法は?

私が走るとき

$ screen id

[screen is terminating]画面上部のメッセージのみ表示できます。私が見たいのはコマンドの出力idとメッセージです。[screen is terminating]私は彼を通して得ることができます:

$ TERM=vt102 screen id

この場合、screen(1)は画面を消去しませんが、最後に多くの空白行が表示されるため、上にスクロールして表示できますid

TERM=vt102しかし、もっと高度な端末機能が必要なので、使用したくありません。

終了時に画面(1)が画面を消去するのを防ぐ方法は?

答え1

screenこれはターミナルエミュレータであることに注意してください。したがって、あなたの質問は、開始する方法とxterm終了時にgnome-terminal最後に表示されたコンテンツがどのように表示されるかを尋ねるのと同じです。xtermgnome-terminalxterm

xterm今と違うのは、画面を描画するためにXプロトコルを使用し、ホスト端末を使用するscreenことです。xtermscreen

デフォルトではscreen、ホスト端末の画面は自分のエミュレートされた端末を表示するために消去され、利用可能な場合はその端末が使用されます。代替画面(消去前)ホスト端末がシャットダウンしたときに起動する前のホスト端末の状態を復元できるようにします。

だからあなたが見るのは、screen離れると画面を消去するのではなく、ホスト端末のホーム画面を復元することです。最後に表示されたウィンドウの内容はscreenまだ代替画面にあります。を使用すると、選択してxterm表示できます。代替画面表示メニューのCtrl + マウスの中央ボタンをクリックします。

ホスト端末が代替画面(vt102など)をサポートしていない場合、これは明らかに不可能です。代わりに、基本的に欲しいものは何もしません。

したがって、あなたができることは、screen端末が代替画面をサポートしていないことをホストに知らせることです。これを行うには、以下を追加します~/.screenrc

 termcapinfo * ti=:te=

つまり、可能なすべてのホスト端末(*、と一致$TERM)のtermcap/terminfoデータベースをオーバーライドして、これらの端末の代替画面に入るまたは出るエスケープシーケンスが空の文字列であることを示します。

tite正確には意味しない代替画面。 ~からhttps://www.gnu.org/software/termutils/manual/termcap-1.3/html_node/termcap_39.html:

  • tismcupin terminfo
    画面の周りでカーソルを非順番に移動するプログラムに必要な、または適切な特殊モードに端末を切り替えるために使用されるコマンド文字列。フルスクリーン表示にtermcapを使用するプログラムは、起動時にこの文字列を出力する必要があります。

  • termcupin terminfo
    文字列によって実行された操作を元に戻すために使用されるコマンド文字列ti。開始時に "ti" 文字列を印刷するプログラムは、終了時にその文字列を印刷する必要があります。

しかし、これは次のように翻訳されます。代替画面ほとんどの端末エミュレータの場合(具体的にxterm代替画面カーソル位置の保存/復元)

関連情報