私が走るとき
$ screen id
[screen is terminating]
画面上部のメッセージのみ表示できます。私が見たいのはコマンドの出力id
とメッセージです。[screen is terminating]
私は彼を通して得ることができます:
$ TERM=vt102 screen id
この場合、screen(1)は画面を消去しませんが、最後に多くの空白行が表示されるため、上にスクロールして表示できますid
。
TERM=vt102
しかし、もっと高度な端末機能が必要なので、使用したくありません。
終了時に画面(1)が画面を消去するのを防ぐ方法は?
答え1
screen
これはターミナルエミュレータであることに注意してください。したがって、あなたの質問は、開始する方法とxterm
終了時にgnome-terminal
最後に表示されたコンテンツがどのように表示されるかを尋ねるのと同じです。xterm
gnome-terminal
xterm
xterm
今と違うのは、画面を描画するためにXプロトコルを使用し、ホスト端末を使用するscreen
ことです。xterm
screen
デフォルトではscreen
、ホスト端末の画面は自分のエミュレートされた端末を表示するために消去され、利用可能な場合はその端末が使用されます。代替画面(消去前)ホスト端末がシャットダウンしたときに起動する前のホスト端末の状態を復元できるようにします。
だからあなたが見るのは、screen
離れると画面を消去するのではなく、ホスト端末のホーム画面を復元することです。最後に表示されたウィンドウの内容はscreen
まだ代替画面にあります。を使用すると、選択してxterm
表示できます。代替画面表示メニューのCtrl + マウスの中央ボタンをクリックします。
ホスト端末が代替画面(vt102など)をサポートしていない場合、これは明らかに不可能です。代わりに、基本的に欲しいものは何もしません。
したがって、あなたができることは、screen
端末が代替画面をサポートしていないことをホストに知らせることです。これを行うには、以下を追加します~/.screenrc
。
termcapinfo * ti=:te=
つまり、可能なすべてのホスト端末(*
、と一致$TERM
)のtermcap/terminfo
データベースをオーバーライドして、これらの端末の代替画面に入るまたは出るエスケープシーケンスが空の文字列であることを示します。
ti
te
正確には意味しない代替画面。 ~からhttps://www.gnu.org/software/termutils/manual/termcap-1.3/html_node/termcap_39.html:
ti
(smcup
interminfo
)
画面の周りでカーソルを非順番に移動するプログラムに必要な、または適切な特殊モードに端末を切り替えるために使用されるコマンド文字列。フルスクリーン表示にtermcapを使用するプログラムは、起動時にこの文字列を出力する必要があります。
te
(rmcup
interminfo
)
文字列によって実行された操作を元に戻すために使用されるコマンド文字列ti
。開始時に "ti" 文字列を印刷するプログラムは、終了時にその文字列を印刷する必要があります。
しかし、これは次のように翻訳されます。代替画面ほとんどの端末エミュレータの場合(具体的にxterm
は代替画面カーソル位置の保存/復元)