Ubuntu Weekly Recipe

第127回 ターミナルマルチプレクサ tmuxを使ってみよう

この記事を読むのに必要な時間:およそ 4 分

端末で作業をするなら,特にsshなどでネットワーク後しに作業を行うなら,仮想端末管理ソフトウェアであるGNU Screenは必須といってよいでしょう。Ubuntu 10.04であれば,GNU Screenをさらに便利に使うためのアプリケーション「byobu」が最初から導入されているので,こちらを使っているユーザも多いと思います(byobuについては本連載72回参照注1)。

今週のレシピは,GNU Screenと同じ仮想端末管理ソフトウェアである「tmux」ターミナルマルチプレクサを紹介します。

注1
byobuはscreenをラップするシェルスクリプトで,Ubuntu発のソフトウェアでもあります。byobuはデフォルトで多機能なhardstatusを提供する他にも,screenの多重起動の禁止や,デタッチされたプロセスが存在する場合は自動でアタッチするなど,素のscreenに比べて使い勝手が大幅に向上しています。またUEC環境では,自身がなんのノードであるか(CC,CLCなど)も表示してくれたりします。

GNU Screenの利点とは

GNU Screenの利点を簡単におさらいしておきましょう。GNU Screenには多くの機能がありますが,筆者が主に使っているのは以下のような機能です。

  • GUIのタブ機能のように,複数の端末を起動して切り替えられる
  • 端末を画面分割して使うことができる
  • 端末上でコピー&ペーストができる
  • 端末をデタッチ/アタッチすることができる

ブラウザやエディタなど複数のページやファイルを開くアプリケーションならば,タブ型のインターフェイスはもはや当然です。screenも複数のウィンドウを一つの端末内で開くことができ,タブのように切り替えて使うことができます。またウィンドウ内で画面を分割し,二つのシェルを並べるような使い方もできます。場合によってはウィンドウ切り替えよりもこちらが便利でしょう。これらは多数のマシンに接続したり,複数の端末を同時に使う場合に威力を発揮します。

図1 byobuを使ってウィンドウを分割した例

図1 byobuを使ってウィンドウを分割した例

コピーペースト機能は文字通り,端末上の文字をコピーペーストする機能です。これはGnome端末のようなGUIのターミナルエミュレータを使っている場合は,あまり恩恵がないかもしれません。しかしtmuxにはコピーしたバッファをさらに便利に使う機能が用意されています(後述)。

そしてscreenを使う最大の理由と言っても過言ではない機能が,デタッチ/アタッチ機能です。これは一言で言えばscreenの中身と接続している端末を分離する機能で,会社から帰宅する際にデタッチを行い,自宅でアタッチして作業再開,のようなことを可能にしてくれます。screenはユーザが C-a C-z を入力した時や,端末が閉じられた時,不意に回線が切れた時などにデタッチを行います。デタッチされたscreenのプロセスはバックグラウンドで動作しつづけるため,アタッチしなおすことで作業を再開することができるのです。 これらの機能は,当然tmuxでも使うことができます。

tmuxのインストールと実行

tmuxはUbuntuのリポジトリからバージョン1.1をインストールすることができます。Ubuntuソフトウェアセンターから「tmux」で検索するか,下記のコマンドを実行してインストールしてください。

$ sudo apt-get install tmux

図2 ソフトウェアセンターからtmuxをインストールしよう

ソフトウェアセンターからtmuxをインストールしよう

tmuxを起動するには,その名のとおりtmuxコマンドを使います。GNU Screenの場合は何も設定を行わずに起動すると,画面には何も表示されず,現在開いているウィンドウの番号すら分からない注2ですが,tmuxはステータスラインがデフォルトで最下部に表示されるようになっています。ステータスラインにはクライアント番号(後述),ウィンドウのリスト,現在の日付と時刻が表示されています。

図3 起動した初期状態のtmux。ステータスラインなど,最低限の設定は最初から行われているのが分かる

図3 起動した初期状態のtmux

注2
byobuであればこのあたりの設定は最初から行われているため,問題にならないかもしれません。

著者プロフィール

水野源(みずのはじめ)

Ubuntu Japanese Teamメンバー。理想のフリーデスクトップ環境を求めて東へ西へ……のはずが,気がついたら北の大地で就職していたインフラ寄りのエンジニア。株式会社インフィニットループ所属。

コメント

コメントの記入