tmux 自动单步执行打开的窗口

tmux 自动单步执行打开的窗口

在我的 VPN 服务器上,我有一些在单独窗口中运行的脚本,我想每隔几秒钟单步执行一次它们,如下面的 GIF 所示。

在此输入图像描述

是否存在现有的 tmux 绑定或我可以创建的绑定,当激活该绑定时,将逐步浏览 tmux 会话的打开窗口(而不是窗格)?即使它是一个在循环中执行下面的击键的宏也可以。我还想使用相同的绑定来停止单步浏览窗口。

Ctrl+ b, n, (等待 3 秒)

答案1

您可以编写自己的小 shell 脚本来执行此操作。例如,mytmux在您的某个位置创建文件PATH并使其可执行chmod +x mytmux,其中包含以下内容:

#!/bin/bash
rotate(){
        file=/tmp/mytmux.$session
        if [ -f "$file" ]
        then rm "$file"
        else touch "$file"
             while [ -f "$file" ] && tmux next-window -t "$session"
             do     sleep 3
             done
        fi
}
case $1 in
-rotate)shift
        session=${1?session name}
        rotate ;;
esac

我让它需要一个参数,-rotate以防您稍后添加其他辅助例程。为您~/.tmux.conf添加合适的绑定,例如:

bind-key C run-shell -b 'mytmux -rotate #{session_name}'

-b是在后台运行。第一次输入时,control-bCtmp 文件不存在,因此 while 循环next-window每 3 秒发出一次命令。第二次删除 tmp 文件,第一个脚本将停止。您应该等待 3 秒钟再重新开始,否则您可能最终会运行 2 个脚本!

相关内容