用途:tmux-session-manager 用于在用户可见的 tmux 面板中执行命令,实现协作式终端操作。它适用于执行命令、运行构建、启动服务或监控日志等需要让用户在终端中看到过程的场景。
确定目标面板:目标面板由用户指定,或通过发现获取。资料提供了以下发现命令:
tmux list-sessions -F "#S"
PANE Title
tmux list-panes -a -F "#S:#I.#P #T"
PANE Title CMD PWD
tmux list-panes -t main -F "#S:#I.#P #T #{pane_current_command} @ #{pane_current_path}"
示例中使用 $PANE 代表目标面板(如 main:1.1)。
关键规则:
- 禁止交互式 TUI:不运行 vim、nano、top 等需要持续交互的程序。
- 引号转义:send-keys 中注意引号转义,防止命令格式错误。
- 读写分离:发送命令后必须读取输出确认结果,不假设成功。
核心操作: 执行命令时,可选先清屏:
tmux send-keys -t $PANE "clear" C-m
发送命令:
tmux send-keys -t $PANE "你的命令" C-m
必须读取输出确认:
tmux capture-pane -pt $PANE -S -100
读取输出:
tmux capture-pane -pt $PANE -S -100 # 根据预期输出调整行数
终止进程:
tmux send-keys -t $PANE C-c
常用按键:C-c 中断进程,C-d EOF/退出,C-z 挂起进程,C-l 清屏。
提示:长时间任务确认启动即可,无需等待完成;输出过长时增加 -S 行数(如 -S -200);判断命令完成可多次 capture 检查 shell prompt 是否出现。
限制:不运行需要持续交互的 TUI 程序;命令与输出需注意引号转义与读取确认。其他收费、平台、效果等信息暂未提供。