このブログはURLが変更になりました

新しいブログはこちら→ https://matsuu.hatenablog.com/

tmuxで複数のペインに対して一斉に同じ文字を入力する

これはターミナルマルチプレクサAdvent Calendarの8日目です。7日目はtaksatouさんのtmuxに独自機能を追加するでした。

tmuxには複数のペインに対して一斉に同じ文字を入力する設定が存在することをご存知でしょうか。その設定はsynchronize-panesです。

synchronize-panes [on | off]
Duplicate input to any pane to all other panes in the same window (only for panes that are not in any special mode).

これはウィンドウに対するオプションで、設定するとそのウィンドウ上のすべてのペインに対して一斉入力が可能になります。

動作例

実際に試してみます。ペインを2枚開き、片方のペインで

tmux set-window-option synchronize-panes on

と入力します。C-b : set-window-option synchronize-panes onでもokです。

このように、set option: synchronize-panes -> onと表示されれば準備完了です。

ここで、freeコマンドを実行してみましょう。

すると両方のペインに同じコマンドが入力されたではありませんか!おおおー。

tmux set-window-option synchronize-panes offと入力すれば解除可能です。

想定される用途

各ペインで異なるサーバにsshでログインし、synchronize-panesで同じコマンドを一斉に入力する、といったことが可能です。
puppetやcapistranoを使うほどでもない、ちょっとしたコマンドを入力したいけど1つづつ入力していくのは手間、って時に便利ですね。

ちなみに、画面が十分に広ければ、いくつでもペインを開くことができるので、例えばこんな感じで一斉ping攻撃も可能です。やっちゃダメですよ。

まとめ

今回はtmuxの便利設定synchronize-panesを紹介しました。
他にもtmuxにはあまり知られていない便利機能がたくさんあります。詳しくはman tmuxを参照されることをオススメします。

ちなみに、最近のTera Term Proには同様の機能が標準で組み込まれてるそうです。詳しくはブロードキャストコマンドでググってね。