tmuxの基本的な使い方とコマンドのまとめ

スポンサーリンク

端末多重化ソフトウェアである  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コマンドを使用します。

画面下に緑色のバーが表示されたら、セッションが作成されアタッチしている状態になります。左下に表示されているのが [セッション名] ウィンドウ番号:ウィンドウ名 です。デフォルトでは以下の通りです。

f:id:tasukujp:20150708233928p:plain

セッション名はセッションを作成する時に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 + ,です。

f:id:tasukujp:20150709215814p:plain

コマンド 機能
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で以下の画面のようにペインのインジケータが表示されます。これが表示されてる間に数字を押す事でペインを移動することが可能です。

f:id:tasukujp:20150709220403p:plain

コマンド 機能
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 ペイン強制終了