UNIX的なアレ

UNIX的なこととかいろいろ

screenを初めて使うためのチュートリアル


screenというものすごく便利なアプリケーションがあります。上記写真のように、1つのターミナル内で、仮想的に複数の端末を起動させることができるものです。
ただ慣れるまでは少々使い方がとっつきづらいという話も聞きますので、今回はscreenを基本的に使えるまでのチュートリアルを紹介したいと思います。

どんなことができるの?

複数の仮想端末をあげるとどういったメリットがあるのでしょうか?実際に自分はscreenを使うまではターミナルを複数起動させ、Desktop上はターミナルだらけになっていました。
実際はそれでも問題は起きないのですが、個人的にはローカルPC側では極力起動しておくアプリケーションを少なくしたいと思っているため、screenを使うようになりました。
ただそれだけであればWindowsならPoderosa,MacならiTerm,GnomeならGnome端末があるのですが、screenなりのメリットもあるので利用する価値はあるかと思います。

screenをインストールする!

まずはインストールしましょう。有名どころのディストリビューションでは、ほぼパッケージが容易されています。自分が試したOSだけ記載します。

 # apt-get install screen
 # yum install screen
 # port install screen

素晴らしく簡単ですね。

screenの環境設定をする!

環境設定といっても、.screenrcと呼ばれる設定ファイルを記述します。以下の内容を記述したファイルを自分自身のホームディレクトリに、.screenrcという名前で保存してください。

autodetach on
bell_msg "^G"
defkanji utf-8
defencoding utf-8
encoding utf-8 utf-8
defscrollback 10000
escape ^Jj
startup_message off
vbell off
caption always "%{= wb} %-w%{=bu dr}%n %t%{-}%+w %= %{=b wk} [%l] %{=b wb}%y/%m/%d(%D) %{=b wm}%c"
bind n screen
bind h prev
bind j next
bind l windowlist

いろいろなサイトをみたりしながら作ったものです。キーバインドはデフォルトと変えているので注意してください。
(実際、screen上でemacsをあげたい方はこれだとぶつかります。)
細かい設定の意味などはここでは割愛しますので、チュートリアルを行いながら確認していきましょう。

screenを起動する!

それでは環境設定ファイルを作成したら、screenを起動しましょう。

 # screen

以下のような画面が表示されればOKです。

複数のシェルを起動する!

それでは、複数のシェルをあげてみましょう。以下のコマンドを打ってください。

 # screen -t newterm

どうでしょうか?画面下部に、newtermと行った項目が追加されているのに気がつくと思います。
これはscreen上でnewtermと名前をつけたシェルが新規に起動したことをさします。実際は、使用するアプリケーション毎にわかりやすく名前をつけて起動させると良いでしょう。
赤字で選択されているのが現在操作できる端末になるので先ほど最初に起動したbashという端末に戻ってみましょう。

 CTRL+j の後、0(数字のゼロ)

どうでしょうか?こんどはbashと書かれた方が赤くなったと思います。
上のキー操作は、CTRL +jでescapeさせ、0で切り替える仮想端末を選択しています。

ではこの調子で複数の仮想端末を開いてください。先ほど打った、screen -t ${newterm}を複数回打ちましょう。
0,1,2,3...と順々に起動していくと思います。
またこれを切り替えて使いたいのですが、自分はわりと数字キーはタイポしやすい方なのでリストから選択する方法を使います。

 CTRL+j の後、l (アルファベット小文字のエル)

下記画面のようになったでしょうか?これは現在起動している仮想端末をリスト表示している画面になります。

ここの操作は、viキーバインド or カーソルキーで上下に動かしreturnで選択をします。

j or カーソルキー↓
screenのカーソルを↓に動かす
k or カーソルキー↑
screenのカーソルを↑に動かす
return
選択

さて選択できたでしょうか?screenのもっとも基本的な操作は以上です。

画面を分割する!

では最後に画面分割をやりましょう。下記のキー入力をして下さい。

 CTRL+j の後、S (アルファベット大文字のエス)

どうでしょうか?下記の図のようになったでしょうか。
これは先ほど複数あげた仮想ターミナルを1つのターミナル内で分割して表示している図になります。

上下で切り替える時は以下のキー入力をしてください。

 CTRL+j の後、TAB

これで入力ができるターミナルへのフォーカスが切り替わります。
実際に使う場面では、上の仮想端末でLogを見ながら下の仮想端末で実作業というような使い方が便利です。

では、画面分割を閉じましょう。

 CTRL+j の後、X (アルファベット大文字のエックス)

これでフォーカスしていた仮想端末側が閉じられます。
ただここでいう閉じるは実際にシェルが終了するわけではなく、画面上閉じているだけなので安心してください。先ほどと同様の手順で再度選択することも可能です。

基本操作まとめ

最後に操作方法をまとめます。とりあえずは今回紹介した操作だけにします。

CTRL+j
escapce
CTRL+j -> 数字
任意の仮想端末にフォーカスする
CTRL+j -> l
リスト表示
j or カーソルキー↓
screenのカーソルを↓に動かす
k or カーソルキー↑
screenのカーソルを↑に動かす
CTRL+j -> S
画面の分割(Split)
CTRL+j -> X
フォーカスしている仮想端末を閉じる

ご要望があれば続きも。

いかがでしょうか?上記の使用方法だけでもかなり便利に使えると思います。
実際のところscreenにはもっと便利な機能があり(detachやrollbackなど)、その機能をつかってこそscreenの醍醐味があるのではないかなと思っています。
ご要望があれば、別途記載したいと思います。