試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

端末の中で仮想端末を管理するtmux(GNU screenの代替)について(概要・実行・操作)

tmux(http://tmux.sourceforge.net/)は端末の中で仮想端末を作成して管理するソフトウェアで、GNU screenの代替を目指している。OpenBSDのベースシステムの一部でBSDライセンス
仮想端末を作って切り替えるだけならX Window System上の多くの端末エミュレータが対応しており、この類のソフトウェアが不要なことも多いが、端末での作業が多い場合やキーボード中心で作業をする場合、リモートマシンからGUIなしで接続する場合などには役に立つ。画面の中に日付・時刻や仮想端末一覧などを表示したりできるのも便利。
この類のソフトウェアの利点と欠点はGNU screenについてのまとめドキュメントの記述も参照。
GNU screenと比べると、多くの機能は共通しており、使い方も似ているが、個人的にはGNU screenの設定ファイル(特に最下行のステータス表示のカスタマイズ)が難解なのに対して設定が記述しやすくなっているという印象を持った。また、GNU screenの中で実行すると表示が崩れて使い物にならない端末アプリケーションが正常に表示されることがある*1のも嬉しい。その他、画面の分割やコピペなどにおいて、より高機能な部分もある。

  1. 起動
  2. 操作
    1. Prefixキーとそのカスタマイズ
    2. 各種操作
    3. プロンプトから任意の内部コマンドを実行

起動

コマンド名はそのままのtmux

$ tmux

これで1つ仮想端末(ウィンドウ)が作成され、その中のシェルに入る。
256色拡張は標準で対応しているが、(256色対応の)端末によっては-2オプションを付けないと256色にならない。

(256色拡張に対応する端末でうまく256色にならない場合)
$ tmux -2

手元の環境ではxtermに加え、GNOME端末LXTerminalなどのVTEライブラリによる端末ではこの指定が必要で、256色パッチを当てたrxvt-unicode(configureオプション--with-term=rxvt-256colorを付けたもの)では指定なしで動作した。*2
セッションの中で一度切断(detach)した後の再接続には「attach」という内部コマンド*3を引数に指定する。

$ tmux attach

上の「attach」以外にも、引数に内部コマンドを指定して操作を行ったり情報を得たりすることができる。

操作

GNU screenと同様、tmuxの端末制御に関する各種操作は2段階のキー入力となり、制御コマンドを送るということを知らせる1つ目のキーがPrefixキーとなる。

Prefixキーとそのカスタマイズ
GNU screenでは既定のコマンドキーはCtrl+aだが、tmuxでコマンドキーに相当するPrefixキーの既定値はCtrl+bとなる。もちろんこれは設定ファイルで変更可。
下はCtrl+tPrefixキーにする場合の設定例。
[一部]ファイル名: ~/.tmux.conf

## 既定のPrefixキー(Ctrl+b)の割り当てを解除
unbind-key C-b
## Ctrl+tをPrefixキーにする
set-option -g prefix C-t
bind-key C-t send-prefix

この3行のまとまりによりPrefixキーを変更する。他のキーにしたい場合は「t」の部分を変更する。

各種操作
Prefix-?*4を押すと、現在割り当てられているキー操作(キーと内部コマンド名との対応)の一覧が表示され、上下にスクロールすることができる。qで抜ける。
この一覧の読み方としては、例えば

d: detach-client

という行がある場合、Prefix-dで内部コマンド「detach-client」が実行され、セッションから切断して元のシェルに戻る。
一覧には、特に設定をしていなくても基本的な操作を提供する内部コマンドが多数割り当てられている。もちろん、これらは割り当てを解除することができる。

プロンプトから任意の内部コマンドを実行
既定でPrefix-:に割り当てられている内部コマンドcommand-promptを実行すると、内部コマンドを実行するための入力欄が出る。ここに直接内部コマンドを入れて実行することができる。

使用したバージョン:

  • tmux 1.1(Mandriva Linux 2010.1の開発版ソースRPMを手動ビルドしたもの)

*1:手元の環境ではalsamixerMidnight Commanderなど・GNU screenの設定が正しくないという可能性もあるが...

*2:端末の中で設定されるTERMの中に「256」があるかで判断している?

*3:正式には「attach-session」で、この短縮形

*4:Prefixキーを押した後に続けて?キー(Shift+/)を押す