lisz-works

プログラミングと興味を貴方に

tmuxのペインを自動でセットアップしてもらうスクリプト

【スポンサーリンク】

tmux

こんにちわlisです!

コード読み書きしたりログ見たり……とするときに、tmuxでペイン分割をして1画面で確認をしています。

接続機器へアクセスして操作したりもあるので、毎回たくさんペイン分割してアクセスしてゴニョゴニョとやるのが大変です。

ということでtmuxのペインを自動でセットアップしてもらうスクリプトについてです!

やりたいこと(例)

やりたいことはザックリとこんな感じでした。

  1. ホストにアクセスしてログ見たりソースいじったりするけど、クライアント側も操作したい
  2. ホストには見たいログが3つあるので、tail -fで監視したい
  3. ホスト内の作業ディレクトリを勝手に開いてほしい

やりたいことを実現するために作ったコード

#!/bin/bash
# 縦半分
tmux split-window -h -p 50
## 右側
# 半々
tmux split-window -v -p 50
# 上ペインを 分割
tmux select-pane -t 1
tmux split-window -v -p 30
tmux select-pane -t 1
tmux split-window -v -p 50
## 左側
tmux select-pane -t 0
tmux split-window -v -p 50


# 自動展開
tmux send-keys -t 2 access_comm C-m
tmux send-keys -t 3 access_comm C-m
tmux send-keys -t 4 access_comm C-m
tmux send-keys -t 5 access_comm C-m
sleep 1

#
tmux send-keys -t 0 "cd ~/work/" C-m

tmux send-keys -t 2 user C-m
tmux send-keys -t 2 "tail -f /var/log/hoge.log" C-m

tmux send-keys -t 3 user C-m
tmux send-keys -t 3 "tail -f /var/log/fuga.log" C-m

tmux send-keys -t 4 user C-m
tmux send-keys -t 4 "tail -f /var/log/piyo.log" C-m

tmux send-keys -t 5 user C-m
tmux send-keys -t 5 "cd /workspace/" C-m
tmux send-keys -t 5 ". ./init" C-m
tmux send-keys -t 5 "clear" C-m

# 空Enter
for i in `seq 7`;
do
    tmux send-keys -t 2 "" C-m
    tmux send-keys -t 3 "" C-m
    tmux send-keys -t 4 "" C-m
done

# 左上を選択
tmux select-pane -t 0

作るに当たって使用していったtmuxの構文について記述していきます。

ペインを分割する: tmux split-window

ペインを分割するには、tmux split-windowを使用します。

今回は出てきたのはこいつら

# 縦半分に水平分割
tmux split-window -h -p 50
# 横半分に垂直分割
tmux split-window -v -p 50
オプション 内容
-h 縦(水平)に分割
-v 横(垂直)に分割
-p 50 分割する比率(50なら50%=半分に分割)

ペイン移動: tmux select-pane

デフォルトで選択されているペインは「0」ですが、「他のペインを操作したい」となった場合、移動→操作が必要となります。

またペインを分割すると、新しく作られたペインにフォーカスされるので、元々いたペインを更に操作したい場合、明示的に移動する必要があります。

今回出てきたのは

# ペイン1に移動
tmux select-pane -t 1

-tでペイン番号を指定します。

キー入力: tmux send-keys

開いたペインで

  • 事前に何かを開いたり
  • 事前に実行しておいてほしい

そんなときはこれ。

# ペイン2に`echo Hello!`を入力する
tmux send-keys -t 2 "echo Hello!" C-m

ペイン移動するtmux select-pane同様、-tでペイン番号を指定。

その後ろに入力したいコマンドを記述します。

C-mEnterと同じなので、この例では

ペイン2にecho Hello!<Enter>を入力

しているのと同様の動きをします。

ただし時間がかかるようなものはsleep等で待ってあげる処置が必要かもしれません。

参考

コチラを参考にしました。ありがとうございました!

muye.sh

qiita.com

qiita.com

muye.sh

blog.kakakikikeke.com

あとがき

tmuxのペインを自動でセットアップしてもらうスクリプトでした!

このあたりを覚えてからtmuxの恩恵がかなり大きく感じてきました。

自分なりのワークスペースを一気に展開できるように作ってみるといい感じです!