tmux 是很強大的視窗分割工具,他可以透過語法建立初始化的視窗結構,今天的案例是我在我的 vagrant 虛機裡面有許多 laravel 專案,每個專案都有使用 horizon queue,每次要工作的時候我先 vagrant ssh 進去虛機以後,再手動割四個視窗,進入四個專案目錄後執行 php artisan horizon 啟動 queue server,這個過程可以透過語法讓 tmux 自己幫你完成。
horizon.sh
#!/bin/bash
# API 專案目錄
PROJECTS=(
"/project1"
"/project2"
"/project3"
"/project4"
)
# 取得目前 tmux Session 名稱
SESSION=$(tmux display-message -p '#S')
# 開啟新視窗並處理第一個 pane
FIRST_DIR="${PROJECTS[0]}"
tmux new-window -n "horizon" -c "$FIRST_DIR"
tmux select-window -t "${SESSION}:horizon"
# 設定第一個 pane 並執行命令
tmux select-pane -t 0
tmux send-keys -t 0 "php artisan horizon" C-m
# 處理其餘 panes
for i in "${!PROJECTS[@]}"; do
if [ "$i" -eq 0 ]; then continue; fi
DIR="${PROJECTS[$i]}"
# 分割方向
if [ "$i" -eq 1 ]; then
tmux split-window -h -c "$DIR"
else
tmux select-pane -t $((i - 1))
tmux split-window -v -c "$DIR"
fi
# 執行命令
tmux select-pane -t "$i"
tmux send-keys -t "$i" "php artisan horizon" C-m
done
# 整理 pane 排列
tmux select-layout tiled
該 script 需要在開啟了一個 tmux window 後執行。
沒有留言:
張貼留言