端末多重化ソフトウェアである tmux の基本的な使い方をまとめました。tmuxを使用することで、ひとつのターミナル上で複数の仮想端末を立ち上げられたり、サーバーで作業していてsshが切れたとしてもプログラムは仮想端末上で動いたままなので、再度セッションに接続することによって作業が再開できたりと非常に便利です。
tmuxのインストール
CentOSの場合はEPELリポジトリを追加してインストールします。
$ rpm -i http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm $ yum -y install tmux
MacはHomebrewからインストール可能です。
$ brew install tmux
tmuxの基本操作
コマンドの説明をする前に予備知識ですが、接頭辞がtmux
の場合は tmux を起動してない状態で使用するコマンド、C-b
は tmux を起動した仮想端末内で使用するコマンドになります。C-b
はプレフィックスキー、またはキーバインドどいいControl-b
の略です。キーバインドを押した後に続いて実行したい操作に対応するキーを入力する事で、ウィンドウ内でのコマンドを実行する形になります。また、接頭辞:〜
はC-b + :〜
のコマンドモードにはいるためのコマンドを省略しています。
tmuxで起動する仮想端末の構成要素は以下の3つです。
- セッション:起動した仮想端末全体
- ウィンドウ:セッション内の画面単位
- ペイン:ウィンドウを分割した単位
セッション関連コマンド
セッションに関連する操作を説明していきます。
セッションの開始
仮想端末を起動してセッションを開始するにはtmux
またはtmux new-session
コマンドを使用します。
画面下に緑色のバーが表示されたら、セッションが作成されアタッチしている状態になります。左下に表示されているのが [セッション名] ウィンドウ番号:ウィンドウ名 です。デフォルトでは以下の通りです。
セッション名はセッションを作成する時にtmux new-session -s <name>
と指定するか、アタッチしている状態でC-b + $
または、:rename-session <name>
で変更することができます。アタッチしてない状態でtmux rename -t <old-name> <new-name>
でも可能です。
ウィンドウ名はC-b + ,
または、:rename-window <name>
で変更です。
コマンド | 機能 |
---|---|
tmux | 新規セッションの開始 |
tmux new-session -s <name> | 新規セッションの開始(名前指定) |
C-b + $ | セッション名変更 |
:rename-session <name> | セッション名変更 |
tmux rename -t <old-name> <new-name> | セッション名変更 |
C-b + , | ウィンドウ名変更 |
:rename-window <name> | ウィンドウ名変更 |
セッションのデタッチ
セッションをデタッチするにはC-b + d
を実行します。仮想端末が終了して元の画面に戻ります。
コマンド | 機能 |
---|---|
C-b + d | セッションのデタッチ |
:detach-client | セッションのデタッチ |
セッションのアタッチ
セッションをアタッチするにはtmux a -t <session-name>
を実行します。セッションの開始とは違って、既に作成されているセッションに再び入る事をアタッチといいます。tmux a
のみの場合、最後に起動していたセッションにアタッチされます。
コマンド | 機能 |
---|---|
tmux attach -t <session-name> | 指定したセッションにアタッチ |
tmux a -t <session-name> | 指定したセッションにアタッチ |
tmux a | 直近にアタッチしていたセッションにアタッチ |
セッションの削除
セッションを削除するにはtmux kill-session -t <session-name>
を実行します。tmux kill-session
のみだと最後に起動していたセッションが削除されます。全てのセッションを削除する場合はtmux kill-server
です。ちなみに、アタッチ中に全てのウィンドウをexit
で抜けてもセッションが削除されます。
コマンド | 機能 |
---|---|
tmux kill-session -t <session-name> | 指定したセッションを削除 |
tmux kill-session | 直近にアタッチしてたセッションを削除 |
tmux kill-server | セッションを全て削除 |
セッションの確認
起動しているセッションを確認するにはtmux ls
を実行します。セッションに接続されてるクライアントを確認するにはtmux lsc
です。
$ tmux ls fuga: 1 windows (created Thu Jul 9 00:01:19 2015) [106x6] hoge: 1 windows (created Wed Jul 8 23:05:24 2015) [106x6]
コマンド | 機能 |
---|---|
tmux list-session | セッション一覧 |
tmux ls | セッション一覧 |
tmux list-client | クライアント一覧 |
tmux lsc | クライアント一覧 |
ウィンドウ関連コマンド
ウィンドウに関連する操作を説明していきます。
ウィンドウの作成
ウィンドウを作成するにはC-b + c
または:new-window
を実行します。また、デタッチした状態でtmux new-window
を実行すると最後に起動していたセッションにウィンドウが作成されますが、これはあまり使う事は無いでしょう。現在選択されているウィンドウはウィンドウ名の横に*
が付いています。ウィンドウの名前変更は上述していますがC-b + ,
です。
コマンド | 機能 |
---|---|
C-b + c | ウィンドウ作成 |
:new-window | ウィンドウ作成 |
tmux new-window | ウィンドウ作成 |
ウィンドウの移動
ウィンドウが複数あって移動したい場合はC-b + n
で右側のウィンドウに、C-b + p
で左側のウィンドウに移動します。C-b + <number>
でウィンドウ番号を指定して移動することもできます。C-b + w
を実行するとウィンドウの一覧が表示されますので、選択してEnterか数字を押すことでも移動できます。
コマンド | 機能 |
---|---|
C-b + n | ウィンドウ移動(next) |
C-b + p | ウィンドウ移動(pre) |
C-b + <number> | 指定した番号のウィンドウに移動 |
C-b + w | ウィンドウ一覧表示(矢印キーで選択してEnterか数字を押すと移動) |
ウィンドウの終了
C-b + &
を実行することでウィンドウを強制終了することができます。また、exit
で最後まで抜けていっても終了可能です。
コマンド | 機能 |
---|---|
C-b + & | ウィンドウ強制終了 |
ペイン関連コマンド
ペインに関する操作を説明していきます。
ペインの分割
ペインの分割は自由自在です。C-b + "
で横分割、C-b + %
で縦分割することができます。
コマンド | 機能 |
---|---|
C-b + “ | ペイン横分割 |
C-b + % | ペイン縦分割 |
ペインの移動
分割したペインはC-b + o
で移動できます。~/.tmux.conf
を設定することによってマウスでの移動も出来るようになりますがそれはまた別の機会に。またC-b + q
で以下の画面のようにペインのインジケータが表示されます。これが表示されてる間に数字を押す事でペインを移動することが可能です。
コマンド | 機能 |
---|---|
C-b + o | ペインの移動 |
C-b + q | インジケータ表示 |
:display-panes | インジケータ表示 |
C-b + q + <number> | 表示された番号のペインに移動 |
ペインの終了
ペインの終了は2パターンあり、現在のペインを終了する場合はC-b + x
で、現在のペイン以外を終了(分割解除)する場合はC-b + !
を実行します。
コマンド | 機能 |
---|---|
C-b + x | ペイン強制終了(現在のペインを終了する) |
C-b + ! | ペイン分割解除(現在のペイン以外が終了する) |
ペインの入れ替え
ペインを分割したのはいいけど場所を入れ替えたいと思った時は、C-b + {
とC-b + }
でペインを入れ替えることが可能です。
コマンド | 機能 |
---|---|
C-b + { | ペインの入れ替え(現在のペインを左側のペインと入れ替える) |
C-b + } | ペインの入れ替え(現在のペインを右側のペインと入れ替える) |
コマンドまとめ
同じコマンドも書いてたりしましたので、これだけ使えれば基本は大丈夫というコマンドだけで一覧にまとめました。基本的にコマンドモードC-b + :
は、個人的にほとんど使わないので省きました。
コマンド | 機能 |
---|---|
tmux / tmux new-session -s <name> | 新規セッションの開始 |
C-b + $ | セッション名変更 |
C-b + , | ウィンドウ名変更 |
C-b + d | セッションのデタッチ |
tmux a / tmux a -t <session-name> | セッションにアタッチ |
tmux ls | セッション一覧 |
tmux kill-session -t <session-name> | セッションを削除 |
C-b + c | ウィンドウ作成 |
C-b + n | ウィンドウ移動(next) |
C-b + p | ウィンドウ移動(pre) |
C-b + w | ウィンドウ一覧表示で移動 |
C-b + & | ウィンドウ強制終了 |
C-b + “ | ペイン横分割 |
C-b + % | ペイン縦分割 |
C-b + o | ペインの移動 |
C-b + q + <number> | ペインのインジケータ表示・移動 |
C-b + x | ペイン強制終了 |