■ 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-d | screen をデタッチ |
Ctrl-t [ | コピーモードへ ・vi のカーソル移動キーバインドで移動 ・space で範囲選択 ・ESC でコピーモードから戻る |
Ctrl-t ] | ペースト |
Ctrl-t S | ウィンドウ分割 |
Ctrl-t Tab | 分割された他のウインドウへのカーソル移動 |
Ctrl-t Q | ウィンドウ分割解除 |
Ctrl-t H | ログ取得 (~/screenlog.* として保存される) |
Ctrl-t A | タイトル名変更 |