名称: tmux-terminal 描述: 通过tmux进行交互式终端控制,用于TUI应用、提示和长运行CLI工作流。 角色: [开发者, QA测试员]
tmux-terminal
概述
使用tmux驱动交互式终端会话,包括像ralph-tui这样的TUI工作流。tmux允许您发送按键、捕获屏幕输出,并在步骤间保持进程运行。
何时使用
- 测试
ralph-tui或任何交互式CLI提示 - 管理长运行进程(web服务器、循环、监视模式)
- 捕获实时终端输出用于QA报告
- 与重绘屏幕的应用程序交互
前提条件
- 安装
tmux(macOS上预安装)
验证:
tmux -V
核心命令
创建分离会话:
tmux new-session -d -s <名称>
发送命令(附加Enter以执行):
tmux send-keys -t <名称> "<命令>" Enter
捕获屏幕输出:
tmux capture-pane -t <名称> -p
完成后终止会话:
tmux kill-session -t <名称>
特殊按键
使用send-keys与按键名称:
EnterC-c(Ctrl-C)C-d(Ctrl-D)TabEscapeUp,Down,Left,Right
示例:
tmux send-keys -t <名称> Up
tmux send-keys -t <名称> C-c
TUI交互模式
启动ralph-tui
tmux new-session -d -s ralph-tui
tmux send-keys -t ralph-tui "cargo run -p ralph-tui" Enter
在TUI中导航
tmux send-keys -t ralph-tui Down
tmux send-keys -t ralph-tui Enter
捕获和解析屏幕
tmux capture-pane -t ralph-tui -p -S -200
使用-S -200在屏幕嘈杂时捕获最后200行。
长运行进程管理
- 在tmux会话中启动服务器或循环以保持其活动。
- 使用
capture-pane确认健康状态(查找"listening"或"ready"文本)。 - 用
C-c然后kill-session干净地停止。
示例:
tmux new-session -d -s ralph-web
tmux send-keys -t ralph-web "cargo run -p ralph-cli -- web" Enter
tmux capture-pane -t ralph-web -p | rg -n "listening|ready"
tmux send-keys -t ralph-web C-c
tmux kill-session -t ralph-web
注意事项
- 保持会话名称简短且唯一。
- 始终清理会话以避免泄漏后台进程。
- 如果输出看起来为空,稍等片刻并再次捕获。