コマンド完了時に分割画面領域を消去しない

コマンド完了時に分割画面領域を消去しない

いくつかのコマンドを並列に実行しており、すべてのコマンドが完了した後に最後の出力(ターミナルエミュレータのスクロールバックから)を見たいと思います。これは私のテストスクリプトですtest.screen

# 
screen -t A sh -c 'echo important info && sleep 2'

split
focus

# 
screen -t B sh -c 'echo another important info && sleep 5'

スタートコマンド:

$ screen -c test.screen

出力:

[screen is terminating]
[il@reallin ~]$


  --
another important info





   1 B

1つの問題は、最初のジョブがsleep 2完了すると印刷されたメッセージがimportant info削除されることです。zombie kr最初に追加すると、画面はまったく終了しません。回避策として、発信者はすべての画面プロセスが終了するのを待ってから発行できます。-X quit

別の問題:シャットダウン時にキャレットが一番下に移動せず、シェルscreenプロンプトが一部のデータを上書きします。解決策はecho$LINES番です。

ベストアンサー1

画面の終了時に画面が消えないようにするには、代替画面に切り替わらないように端末の説明を選択(または変更)する必要があります。これがTERM価値です外部 screen

xterm(およびPuTTYなどの一部)では、代替画面の使用を防ぐように端末を構成できますが、xtermの代替画面機能を複製するほとんどの端末では、これはハードコードされて構成できません。したがって、端末記述が始点です。

ncursesは代替画面を表示しない端末記述「xterm1」を提供します(そしてDebianで見たことがあるので、Ubuntuのような派生ディストリビューションにあるかもしれません)。他のシステムでは、状況によって異なります。 infocmpとの違いは次のとおりです。

comparing xterm1 to xterm.                                                     
    comparing booleans.      
    comparing numbers.        
    comparing strings.          
        rmcup: NULL, '\E[?1049l'.       
        smcup: NULL, '\E[?1049h'.

Screenプログラムには通常、オフになる代替画面の独自のバリエーションもあります。

   altscreen on|off
   If set to on, "alternate screen" support is enabled in  virtual  termi‐  
   nals, just like in xterm.  Initial setting is `off'. 

追加資料:

おすすめ記事