screenを使ってみる
デタッチ/アタッチという強力な機能をもった仮想端末管理アプリケーションであるscreenを使ってみた。
screenの設定ファイルを編集する
screenの操作に使うほとんどのコマンドはプレフィックスを用いる。
このプレフィクスがデフォルトでは ctrl + a
のため、Shellの行頭移動と被ってしまうので設定を編集する。
ついでに色々編集してみた。( ctrl +
を ^
で表す)
escape ^j^j
startup_message off
defkanji utf-8
defencoding utf-8
encoding utf-8 utf-8
caption always "%{= wb} %-w%{=bu dr}%n %t%{-}%+w %= %{=b wk} [%l] %{=b wb}%y/%m/%d(%D) %{=b wm}%c"
autodetach on
bell_msg "^G"
defscrollback 10000
vbell off
bind n screen
bind h prev
bind j next
bind l windowlist
- escape
- escape keyの設定(ここでは
^j
をescape keyとして登録)
- escape keyの設定(ここでは
- startup_message
- 起動時に表示されるメッセージをoff
- encoding関連の設定
- caption
- 画面下部に表示されるcaptionの設定
- autodetach
- 起動時に自動でデタッチ(後述)
- bell_msg
- バックグラウンドで出力されたベル文字をscreenに出力する(
^G
はベル文字に置換される)
- バックグラウンドで出力されたベル文字をscreenに出力する(
- defscrollback
- スクロールバックバッファの行数を設定
- vbell
- 可視ベルの設定
- windowlist
- 全ウィンドウをリスト表示し、使用するウィンドウを選択できるようにする
screenを立ち上げてみる
$ screen
名前を付けて立ち上げる
$ screen -t test
ウィンドウが複数立ち上がると用途に合わせて移動が必要になる。上記 .screenrc
の設定がなされた状態で以下のように移動できる。
$ ^j + [number] # [number]に指定した番号のウィンドウに移動
$ ^j + h # 1つ前のウィンドウに移動
$ ^j + j # 1つ後のウィンドウに移動
$ ^j + l # 表示されるウィンドウリストから移動先のウィンドウを選択
ウィンドウの分割
ウィンドウを上下に分割する(縦方向の分割はscreenのバージョンを変えないといけないようなので割愛)
$ ^j + S
分割された領域間の移動
$ ^j + [tab]
領域の破棄
$ ^j + X # 現在の領域を破棄
$ ^j + Q # 現在の領域以外の全ての領域を破棄
デタッチとアタッチ
- デタッチ(detach)
- screen上での作業をセッションという形で保存しておくこと
- アタッチ(attach)
- デタッチによって保存されたセッションから作業に復帰すること
デタッチする
$ ^j + d
セッションを確認する
$ screen -ls
There is a screen on:
72181.ttys010.your-pc (Detached)
1 Socket in /var/folders/56/dlftkv4d4191qwj6r_gxs_shmspdv_/T/.screen.
アタッチ
$ screen -r [session_number | session_name]
# 上の例では 72181 もしくは ttys010 を指定する