RLB

Just sharing knowledge

TmuxでWindow(Pane)のコマンドプリセットを用意する

Window分割〜コマンド実行のプリセットってだいたい同じだったりするので、用意する。

tmux_perspective_my_local_servers

#!/bin/sh
pane 11
tmux set-window-option synchronize-panes off 1>/dev/null
tmux rename-window 'my_local_servers'
tmux send-keys -t :.0  "ssh 192.168.1.1" C-m
tmux send-keys -t :.1  "ssh 192.168.1.2" C-m
tmux send-keys -t :.2  "ssh 192.168.1.3" C-m
tmux send-keys -t :.3  "ssh 192.168.1.4" C-m
tmux send-keys -t :.4  "ssh 192.168.1.5" C-m
tmux send-keys -t :.5  "ssh 192.168.1.6" C-m
tmux send-keys -t :.6  "ssh 192.168.1.7" C-m
tmux send-keys -t :.7  "ssh 192.168.1.8" C-m
tmux send-keys -t :.8  "ssh 192.168.1.9" C-m
tmux send-keys -t :.9  "ssh 192.168.1.10" C-m
tmux send-keys -t :.10 "ssh 192.168.1.11" C-m
tmux set-window-option synchronize-panes on 1>/dev/null

こちらの例でいえば、現在居るWindowを10分割して、それぞれ任意のサーバへSSHを同時接続を試みます。

上記を応用すれば、それぞれのpaneに対してローカルにcdだったり、リモート先でcdさせた状態でssh接続(ssh root@192.168.1.1 -t "cd /some/directory/; bash --login"')と色々出来ると思うので試してみて下さい。

どこからでも呼び出す

上記であれば、tmux_perspective_my_local_serversという長い名前ですが、これを適当にPATHが通っているところに、配置します。私の場合は、さらにそれに対するシンボリックリンクを作成し、そちら経由で利用しています。

ln -s tmux_perspective_my_local_servers tpmls

#実際に利用するときはtpmlsで呼び出す
tpmls

このtmuxのプリセットシリーズは増える傾向にあるので、混乱しないように正式名称を記載し、「tpXXコマンドはtmuxの画面プリセットを呼び出すシリーズだ」という流れで覚えて使っています。

画面分割コマンドPane

こちらは以下の記事に記載した画面分割コマンドなのでご参照下さい。これも合わせてPathを通せばOKです。 http://rksz.hateblo.jp/entry/2012/11/18_tmux_pane_command