脚本化 tmux
2022-02-09 tech linux tmux 5 mins 1893 字
这是很久前想整理的文档,太久了已经遗忘了,这里就只记录我的脚本吧。一些命令可以直接参考手册。
自动化tmux主要场景是快速启动工作台,有些命令已经记不清了,也一股脑放上来,以后如果有需要再修正好了。
可以查看 man 手册对照:https://man7.org/linux/man-pages/man1/tmux.1.html
比如最常用的和 panes 相关的操作,可以查看 https://man7.org/linux/man-pages/man1/tmux.1.html#WINDOWS_AND_PANES
# kelu.sh
#!/bin/bash
name="kelu"
time=$(date +%Y-%m-%d)
cmd1="tail -f ~/Workspace/xxs.log"
cmd2="iftop"
cmd3="docker ps -a | grep -E 'openresty|nginx'"
create_w (){
client=$1
tmux_name="$name:$client"
tmux neww -a -n "$client" -t $name
tmux send -t $tmux_name "ssh sh4" Enter
tmux send -t $tmux_name "$cmd1" Enter
tmux split-window -h -t $tmux_name # 纵向
tmux send -t $tmux_name "ssh sh2" Enter
tmux send -t $tmux_name "$cmd2" Enter
tmux send -t $tmux_name "LTttt3BD"
tmux split-window -v -t $tmux_name # 横向
# tmux send -t $tmux_name "ssh sh1" Enter
tmux send -t $tmux_name "$cmd2" Enter
tmux send -t $tmux_name "LTttt3BD"
tmux select-pane -t 0 # 切换第一个
tmux split-window -v -t $tmux_name # 横向
# 开启新的 windows
tmux neww -a -n "blog" -t $name
tmux send -t "$name:blog" "cd Workspace/blog" Enter
tmux send -t "$name:blog" "nvim" Enter
tmux send -t "$name:blog" ":NvimTreeToggle" Enter
# 选择第一个 pannel
tmux selectw -t $tmux_name
}
tmux new -s $name -d # 新tmux session
create_w main # 新windows,多个panel
# 实际上可以创建多个windows,在这里我起了一个统一的名叫 kelu 的session, main是第一个windows,例如我创建main2这个windows如下:
# create_w main2
tmux attach -t $name
exit
在命令行中运行
kelu.sh
即可自动运行预设的窗口和命令行。
如果我启动了多个windows,我希望他们能每隔一段时间自动切换,相应脚本如下:
# switch.sh
#!/bin/bash
init=1
num=$1
tm=$2
w=$init
if [ ! $num ]; then
num=6
fi
if [ ! $tm ]; then
tm=10
fi
while true; do
w=$(( $w + 1 ))
tmux select-window -t $name:$w
if [ $w -gt $num ]; then
w=$init
fi
sleep $tm;
done