2009年1月31日土曜日

GNU screen について

■ GNU screen とは

GNU screen は、仮想端末管理ソフトです。CUI で作業をする人は、使って損は無いソフトだと思います。
私は、これを使い始めて 7 年ぐらい経ちました。今では、これが無いと仕事になりません。
GUI に慣れた人たちに勧めると、「ふ~ん、それで?」みたいな反応になりますが…。(^^;
これを使うと何がうれしいかと言うと、1 個の端末ウインドウ内で、複数の端末を仮想的に起動し、キー操作で切り替えることができるようになります。端末ウィンドウを複数起動しなくて良くなるため、画面がゴチャゴチャせずに済みます。
リモートでログインした先でこれ起動すると、1 個のターミナル内で複数のターミナルが使用できます。
あとはキー操作のみで、コピー&ペースト、画面スクロール、画面分割、ログ取得等々できるので、使いこなせば効率的に作業ができるようになります。
そのほかの説明は、"screenのススメ" とかが詳しいので、そちらを参照してください。
Google で検索するときは "GNU screen" で検索してください。"screen" だけだと、一般的な名称すぎて、いろいろ引っかかってしまいます (たぶん、これが普及しない原因!?)。

■ エスケープキー変更

screen を操作するときは、必ずエスケープキーを押す必要があるのですが、デフォルトが Ctrl-a になっていて、このままだと便利ではありません (Ctrl-a は「行頭へ移動」ですよね)。
エスケープキーは設定ファイル ~/.screenrc で変更することができます。
私のお薦めは、Ctrl-t です ( toggle は使わないので)。 Ctrl-z 派も結構いるようです。

$ vi ~/.screenrc
escape ^Tt

■ screen の起動

screen を起動するには、以下のようにします。

$ screen

良く使うので、.bashrc とかに alias 設定をしておくと良いです。(sc で起動、scx でアタッチ)

$ vi .bashrc
alias sc='screen'

function scx () {
    screen -x $1
}

■ .screenrc 設定例

私が育ててきた .screenrc を貼り付けておきます。

escape ^Tt
#termcap kterm hs@
#terminfo kterm hs@
termcap  xterm* 'AF=\E[3%dm:AB=\E[4%dm'
terminfo xterm* 'AF=\E[3%p1%dm:AB=\E[4%p1%dm'
termcap  kterm* 'AF=\E[3%dm:AB=\E[4%dm'
terminfo kterm* 'AF=\E[3%p1%dm:AB=\E[4%p1%dm'
termcapinfo kterm 'hs:ts=\E[?2S\E[?E\E[?%i%dT:fs=\E[?F:es:ds=\E[?E'
termcap  vt100 'AF=\E[3%dm:AB=\E[4%dm'
terminfo vt100* 'AF=\E[3%p1%dm:AB=\E[4%p1%dm'
terminfo cygwin KJ=SJIS
termcapinfo cygwin KJ=SJIS
defencoding UTF-8

termcap  facit|vt100|xterm LP:G0
terminfo facit|vt100|xterm LP:G0

autodetach on
startup_message off
shell /bin/bash

defhstatus "^En:^Et"
defscrollback 9999
hardstatus alwayslastline "%w"

hardcopydir $HOME/.screen
hardcopy_append on

## audible bell
#vbell_msg '%x'
vbell off

## bell on hide window
bell "Bell in window %."
## activitiy on hide window
activity "Activity in window %."

bind 'd' setenv DISPLAY
#bind w windowlist -b
bind ^p paste
bind  p paste
bind ^h prev
bind  k kill

#kanji euc
#defkanji euc

#markkeys 'h=^B:l=^F:$=^E:^U=^Z:^D=^V'

#screen -t root 1 
screen -t bash 0 
#screen -t bash 1 
#screen -t EMACS 0 emacs -nw

multiuser on

■ よく使う screen コマンドリスト

エスケープキーは Ctrl-t、上記 .screenrc を使った場合

コマンド説明
Ctrl-t Ctrl-c新しい端末を生成
Ctrl-t Ctrl-n次の端末へ
Ctrl-t Ctrl-h前の端末へ
Ctrl-t Ctrl-t端末をトグルで切り替え
Ctrl-t k端末を削除
Ctrl-t Ctrl-dscreen をデタッチ
Ctrl-t [コピーモードへ
・vi のカーソル移動キーバインドで移動
・space で範囲選択
・ESC でコピーモードから戻る
Ctrl-t ]ペースト
Ctrl-t Sウィンドウ分割
Ctrl-t Tab分割された他のウインドウへのカーソル移動
Ctrl-t Qウィンドウ分割解除
Ctrl-t Hログ取得 (~/screenlog.* として保存される)
Ctrl-t Aタイトル名変更

0 件のコメント: