Linux や MacOS のターミナル(端末)の画面を分割/多重化して、1つのターミナル画面内で複数のターミナルプロセスを実行できるようにする、というツール tmux を使ってみました。ツール自体は結構以前からあったようですが、存在を知らなかった・・・
まずはインストール前の環境準備から。僕の環境は CentOS ですが、他の Linux ディストリビューションや MacOS などでも同様のはずです。
tmux はソースが公開されていて、ソースからビルドして導入します。というわけで公式サイトから tmux 自体のソースコードをダウンロードしておきます(今日時点の最新安定版は tmux-1.9a.tar.gz):
http://tmux.sourceforge.net/
最新安定版が 1.9a であれば、以下のコマンドでもダウンロードできます:
また、 tmux のビルドにはライブラリとして curses ライブラリが必要です。これは yum でサクッと導入します:
更に libevent 2.0 以上が必要です。一般的な環境に導入されているのは 1.x だと思うので、こちらも別途ソースからビルドして用意する必要があります(今日時点の最新安定版は libevent-2.0.21-stable.tar.gz):
これで tmux をビルドする準備が完了したので、改めてダウンロードしてきたソースファイルから tmux をビルドします:
tmux を実行する前に /etc/ld.so.conf.d/libevent.conf というファイルを新規に作成して libevent をインストールした場所を指定し、あらかじめロードしておく必要があります。
これで tmux のインストールは完了です。以下、簡単な使い方の紹介。
tmux を起動するには端末のプロンプト画面から 'tmux' と入力します:
あまり変わったように見えませんが、tmux が起動して、最初のセッションを作成し、その中で1つのウィンドウが作成されます:

この状態から tmux コマンドを駆使して複数のセッション/ウィンドウを管理します。まずはウィンドウを上下2つのペインに分割します。CTRL+b(CTRLキーを押しながら b)に続けて :(コロン)を入力し、画面下部に split-window と入力して Enter キーを押します:

ちなみに、CTRL+b に続けて : で tmux のコマンド入力モードに切り替わります。そこで画面下部に split-window という「縦にウィンドウを分割」という意味のコマンドを入力した結果、このような2画面に分割されたのでした。
同様にして、今度は画面を横に分割してみます。CTRL+b : に続けて split-window -h と入力します:

-h オプションをつけるとアクティブだったウィンドウが横に分割されました。
アクティブペイン内でコマンドを実行すると、その実行結果はペイン内だけに表示されます:

(右下のペインがアクティブな状態で ls コマンドを実行した結果)
CTRL+b o でペイン間の移動が可能で、アクティブペインを切り替えることができます:

(プロンプトが上のペインに移動 この状態でコマンドを実行すると上のペインで実行される)
アクティブペインは CTRL+b x で破棄できます:

(左下のペインをアクティブにしてから破棄コマンドを実行。左下のペインがなくなって上下2つになった)
なお CTRL+b ? でコマンドのヘルプが表示できます:

(上のペインをアクティブにしてヘルプを実行した様子。ショートカットに困った時のためにこのコマンドだけでも覚えておくべき)
クラウドサーバーを利用する場合、初期状態では SSH でしかログインできないし、環境によっては X Window を導入することもできないこともあります。そんな時に唯一使える端末を多重化して使えるのは便利です。
ま、現実問題として3つも4つも開くことはないけど、上下に2つ開いて互いの中身をコピペできるだけでもかなり使える。
まずはインストール前の環境準備から。僕の環境は CentOS ですが、他の Linux ディストリビューションや MacOS などでも同様のはずです。
tmux はソースが公開されていて、ソースからビルドして導入します。というわけで公式サイトから tmux 自体のソースコードをダウンロードしておきます(今日時点の最新安定版は tmux-1.9a.tar.gz):
http://tmux.sourceforge.net/
最新安定版が 1.9a であれば、以下のコマンドでもダウンロードできます:
# wget http://downloads.sourceforge.net/tmux/tmux-1.9a.tar.gz
また、 tmux のビルドにはライブラリとして curses ライブラリが必要です。これは yum でサクッと導入します:
# yum install ncurses-devel
更に libevent 2.0 以上が必要です。一般的な環境に導入されているのは 1.x だと思うので、こちらも別途ソースからビルドして用意する必要があります(今日時点の最新安定版は libevent-2.0.21-stable.tar.gz):
# wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz # tar xzvf libevent-2.0.21-stable.tar.gz # cd libevent-2.0.21-stable # ./configure # make # make install
これで tmux をビルドする準備が完了したので、改めてダウンロードしてきたソースファイルから tmux をビルドします:
# tar xzvf tmux-1.9a.tar.gz
# cd tmux-1.9a
# ./configure LDFLAGS=-L/usr/local/lib/ (上記でビルドした libevent-2.0 をフラグで指定)
# make
# make install
tmux を実行する前に /etc/ld.so.conf.d/libevent.conf というファイルを新規に作成して libevent をインストールした場所を指定し、あらかじめロードしておく必要があります。
# echo '/usr/local/lib' > /etc/ld.so.conf.d/libevent.conf # ldconfig
これで tmux のインストールは完了です。以下、簡単な使い方の紹介。
tmux を起動するには端末のプロンプト画面から 'tmux' と入力します:
# tmux
あまり変わったように見えませんが、tmux が起動して、最初のセッションを作成し、その中で1つのウィンドウが作成されます:

この状態から tmux コマンドを駆使して複数のセッション/ウィンドウを管理します。まずはウィンドウを上下2つのペインに分割します。CTRL+b(CTRLキーを押しながら b)に続けて :(コロン)を入力し、画面下部に split-window と入力して Enter キーを押します:

ちなみに、CTRL+b に続けて : で tmux のコマンド入力モードに切り替わります。そこで画面下部に split-window という「縦にウィンドウを分割」という意味のコマンドを入力した結果、このような2画面に分割されたのでした。
同様にして、今度は画面を横に分割してみます。CTRL+b : に続けて split-window -h と入力します:

-h オプションをつけるとアクティブだったウィンドウが横に分割されました。
アクティブペイン内でコマンドを実行すると、その実行結果はペイン内だけに表示されます:

(右下のペインがアクティブな状態で ls コマンドを実行した結果)
CTRL+b o でペイン間の移動が可能で、アクティブペインを切り替えることができます:

(プロンプトが上のペインに移動 この状態でコマンドを実行すると上のペインで実行される)
アクティブペインは CTRL+b x で破棄できます:

(左下のペインをアクティブにしてから破棄コマンドを実行。左下のペインがなくなって上下2つになった)
なお CTRL+b ? でコマンドのヘルプが表示できます:

(上のペインをアクティブにしてヘルプを実行した様子。ショートカットに困った時のためにこのコマンドだけでも覚えておくべき)
クラウドサーバーを利用する場合、初期状態では SSH でしかログインできないし、環境によっては X Window を導入することもできないこともあります。そんな時に唯一使える端末を多重化して使えるのは便利です。
ま、現実問題として3つも4つも開くことはないけど、上下に2つ開いて互いの中身をコピペできるだけでもかなり使える。
