画面から次の画面に移動する方法

画面から次の画面に移動する方法

分離モードで実行中の画面が10個あります。これにより、screen -r pidそのうちの1つの結果が表示されます。マニュアルページにはctrl-a + n次の画面が表示されますが、そうすると次のように表示されます。No other window.

私は何を見逃していますか?

答え1

キーの順序はCtrl+ですa。次にキーを放し、キーを押しますn

私はいつも次のタイトルのチートシートを参照しています。画面クイックリファレンス

10のスクリーンセッションを繰り返そうとすると、まるでウィンドウのように見えますが、私が知っている限り、彼らはウィンドウではなくウィンドウにもなりません。画面の面では、セッションとウィンドウは完全に異なる2つです。

答え2

screen各ウィンドウを事前設定して、複数のウィンドウでセッションを実行してみることができます~/.screenrc。以下は実際の例です。

# Automatically running some programs in windows on screen startup.
# The following will open top in the first window, an ssh session to
# monkey in the next window, and then open mutt and tail in windows 8 
# and 9 respectively.

screen top
screen -t monkey ssh monkey
screen -t mail 8 mutt
screen -t daemon 9 tail -f /var/log/daemon.log

そこから盗まれました。きれいで文書化された構成例が/etc/screenrcたくさんあります。screen

答え3

以下は便利です。

  • Ctrla space— 次のウィンドウ
  • Ctrla backspace— 前のウィンドウ
  • Ctrla "— ウィンドウリストメニュー
  • Ctrla 0- ウィンドウ0を選択

(あなたも確認できますman screen

答え4

たとえば、シェルスクリプトを使用してこれを実行できます。

    for s in `screen -ls | grep Detached | grep <regex to your screen names>`; do screen -r $s; done 

このコマンドを実行したら、最初の画面でCtrl+と入力してオフにaしてから非表示d(分離用)を押します。現在の画面を終了すると、bashスクリプトはすぐに次の画面に移動します。

  1. 開いている画面がほとんどないとしましょう。また、業務とデータに分類するものとします。

     for i in {10..13}; do screen -S `printf data%02d $i`; done;
     for i in {0..5}; do screen -S `printf work%02d $i`; done;
     ...
    
  2. 適用後のscreen -ls画面は次のとおりです。

     There are screens on:
         81592.data13    (Detached)
         81539.work04    (Detached)
         81527.work02    (Detached)
         81586.data12    (Detached)
         81574.data10    (Detached)
         81533.work03    (Detached)
         81488.work00    (Detached)
         81607.ttys014.Mo    (Attached)
         81545.work05    (Detached)
         81580.data11    (Detached)
         81521.work01    (Detached)
         81515.work00    (Detached)
     12 Sockets in /var/folders/qs/cvlbhpr54fnb96vtx01bs9k00000gn/T/.screen.
    
  3. それでは隔離分離画面を試してみましょうgrep

     screen -ls | grep Detached
    

あなたはこのような資格があります

        81592.data13    (Detached)
        81539.work04    (Detached)
        81527.work02    (Detached)
        81586.data12    (Detached)
        81574.data10    (Detached)
        81533.work03    (Detached)
        81488.work00    (Detached)
        81545.work05    (Detached)
        81580.data11    (Detached)
        81521.work01    (Detached)
        81515.work00    (Detached)
  1. それでは、もう一度使用して必要なもの(データなど)を選択してみましょうgrep

     screen -ls | grep Detached | grep data
    

これにより、データ画面のみが分離されます。正規表現を使用してgrepキーワード検索を変更して、検索をカスタマイズできます。

        81592.data13    (Detached)
        81586.data12    (Detached)
        81574.data10    (Detached)
        81580.data11    (Detached)
  1. 幸い、結果はよく構造化されており、タブで区切られています。次に、列をフィールドに分割し、2番目のフィールドを選択してみましょうcut

     screen -ls | grep Detached | grep data | cut -d'       ' -f2
    

その後に区切り記号パラメータを挿入するには、Tabキーを押す必要がありますctrl+v。結果は次のとおりです。tab-d

81592.data13
81586.data12
81574.data10
81580.data11
  1. 次に、引用符を使用してコマンドで囲み、...このような結果を繰り返します。実際に実行する前に、公式化されたコマンドを最初に確認してください。使ったecho screen -r

     for s in `screen -ls | \
     grep Detached | grep data | \
     cut -d'     ' -f2`; do \
         echo screen -r $s; \
     done
    
  2. すべてが順調に進むならecho

     for s in `screen -ls | \
     grep Detached | grep data | \
     cut -d'     ' -f2`; do \
         screen -r $s; \
     done
    
  3. 望むより。終了する各画面は次の画面に移動します。

楽しい上映してください!

関連情報