こんにちわlisです!
コード読み書きしたりログ見たり……とするときに、tmuxでペイン分割をして1画面で確認をしています。
接続機器へアクセスして操作したりもあるので、毎回たくさんペイン分割してアクセスしてゴニョゴニョとやるのが大変です。
ということでtmuxのペインを自動でセットアップしてもらうスクリプトについてです!
- やりたいこと(例)
- やりたいことを実現するために作ったコード
- ペインを分割する: tmux split-window
- ペイン移動: tmux select-pane
- キー入力: tmux send-keys
- 参考
- あとがき
やりたいこと(例)
やりたいことはザックリとこんな感じでした。
- ホストにアクセスしてログ見たりソースいじったりするけど、クライアント側も操作したい
- ホストには見たいログが3つあるので、
tail -f
で監視したい - ホスト内の作業ディレクトリを勝手に開いてほしい
やりたいことを実現するために作ったコード
#!/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-m
はEnter
と同じなので、この例では
ペイン2に
echo Hello!<Enter>
を入力
しているのと同様の動きをします。
ただし時間がかかるようなものはsleep
等で待ってあげる処置が必要かもしれません。
参考
コチラを参考にしました。ありがとうございました!
あとがき
tmuxのペインを自動でセットアップしてもらうスクリプトでした!
このあたりを覚えてからtmuxの恩恵がかなり大きく感じてきました。
自分なりのワークスペースを一気に展開できるように作ってみるといい感じです!