Edit
Screenコマンド

複数のマシンで相互に、コマンドシェルを共有したりウィンドウシステムを導入に画面を分割したりするなど、コマンドシェル環境を飛躍的に向上。複数人で同時に同じ画面(コンソール)を共有できるマルチアタッチ機能が秀逸。

Edit
Install

# wget http://ftp.gnu.org/gnu/screen/screen-4.2.1.tar.gz
# tar zxvf screen-4.2.1.tar.gz
# cd screen-4.2.1
# ./configure
# make
# make install

Edit
初期設定

※ここは、好みに応じて。 Ctrl+aと組み合わせて様々なコマンドを発行するのが基本だが、Ctrl+aはhomeキーとして利用しているため、Ctrl+zに変更する

vi ~/.screenrc
 # prefix キーの設定(Ctrl+aからの変更)
 escape ^z^z
 
 # otherコマンドがうまくうまく動かなかったので、明示的に設定してみた
 bind ^z other
 
 # 最終行にwindow一覧を表示
 hardstatus alwayslastline "[%02c] %`%-w%{=b bw}%n %t%{-}%+w"

Edit
プロンプトにscreen番号を表示させる

$ vi ~/.bashrc
 ...
 ScreenNumber=""
 if test "$TERM" = "screen"
 then
   ScreenNumber=" [$WINDOW]"
 fi
 PS1="\u@\h \W$ScreenNumber $ "

Edit
起動と終了

$ screen

で起動。

全てのwindowを閉じるとscreenが終了 ※screenでは仮想画面のことをwindowと呼びます。

接続が切れたscreenにつなぎ直すには

$ screen -r

Edit
環境設定

# vi ~/.screenrc
  escape ^z^z
  bell_msg "^G"
  defkanji utf-8
  defencoding utf-8
  encoding utf-8 utf-8
  autodetach on
  scrollback 10000
  defscrollback 10000
  startup_message off
  #hardstatus alwayslastline "%{=bB Bw}%Y/%02m/%02d [%02c] %`%-w%{=b bw}%n %t%{-}%+w"
  caption always "%{= wb} %-w%{=bu dr}%n %t%{-}%+w %= %{=b wk} [%l] %{=bwb}%y/%m/%d(%D) %{=b wm}%c"
  defhstatus "^En:^Et ^Ec"
  bind w windowlist -b
  bind r eval 'echo "Resize window"' 'command -c resize'
  bind -c resize ^]  command
  bind -c resize j eval 'resize +1' 'command -c resize'
  bind -c resize k eval 'resize -1' 'command -c resize'
  bind c copy
  bind h prev
  bind j next
  bind s split
  bind S remove

※よい captionとhardstatus の例:http://yskwkzhr.blogspot.jp/2012/05/effectively-to-use-gnu-screen.html

Edit
Screenのコマンド一覧

※以下はエスケープを^Zに変更した状態での説明です。

仮想端末作成(Create)^Z c
現在のウィンドウを次の仮想端末に切り替える(Next)^Z n または ^Z [space]
現在の仮想端末の一覧表示(Window List)^Z w
指定した数字のwindowに移動^z <数字>
現在の仮想端末ウィンドウに名前を設定する(Assign)^Z A(Aは大文字)
ウィンドウ分割(Split)^Z s.screenrcで設定を変更してある
ウィンドウ削除(kill)^Z k
ウィンドウ分割解除(Quit)^Z Q(Qは大文字)
ウィンドウ間の移動^Z [TAB]
コピーモードに移行^Z [esc]モード終了は [esc]
コピースタート[space]
コピーエンド[space]
コピーされたテキストをペースト^Z ]
screenをバックグランドで稼動させる(デタッチ)^Z dscreen -r で復活
ウィンドウサイズ変更モードに移行^Z r.screenrcに定義したコマンド
サイズを1行分大きくj
サイズを1行分小さくk
終了はどのキーでもOK[any]

Edit
関連リンク

Edit
便利なポイント

Edit
起動時のオプション

screen起動時に、コマンドを指定することができます。

$ screen [コマンド]
ex) $ screen top

また、-t オプションを付けることでタイトルをつけれます。上記と組み合わせると便利です。

$ screen -t [タイトル] [コマンド]
ex) $ screen -t top top

Edit
タイトルにつく記号

*現在のwindow
-直前のwindow
!ベルが鳴ったwindow

Edit
コピーモードによる画面スクロール

画面スクロールは、通常 Shift+PageUp Shift+PageDown で出来ますが、以下の方法も使い勝手が良いです。

^z [ESC] or ^z [コピーモード

Edit
デタッチとアタッチ

screenを一端抜け、後で続きを再開するには、 デタッチしたあとに、アタッチ操作をします。

^z ^d or ^z dデタッチ(これでscreenから抜けます)

そして、screen再開時に -r を付けます。

$ screen -r

なお、複数のscreenがデタッチしている場合、

$ screen -ls

で確認し、

$ screen -r [プロセス番号]

とします。

Edit
パワーデタッチとマルチアタッチ(これがすごい)

他の端末から強制的にデタッチさせることができます。 (職場でデタッチを忘れ、自宅から作業を継続したい場合)

$ screen -d [プロセス番号]

なお、「-D」オプションにすると、元の接続をログアウトさせれます。

また、同時にscreenに(複数で)接続することもできます。

$ screen -x [プロセス番号]

メインPCとノートPCでの同時接続など便利です。