tmux
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesetmux Skill
tmux Skill
Use tmux only when you need an interactive TTY. Prefer exec background mode for long-running, non-interactive tasks.
仅当你需要交互式TTY时才使用tmux。对于长时间运行的非交互式任务,优先使用exec后台模式。
Quickstart
快速入门
bash
SOCKET_DIR="${TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/tmux-sockets}"
mkdir -p "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/tmux.sock"
SESSION=my-session
tmux -S "$SOCKET" new -d -s "$SESSION" -n shell
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'PYTHON_BASIC_REPL=1 python3 -q' Enter
tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200bash
SOCKET_DIR="${TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/tmux-sockets}"
mkdir -p "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/tmux.sock"
SESSION=my-session
tmux -S "$SOCKET" new -d -s "$SESSION" -n shell
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'PYTHON_BASIC_REPL=1 python3 -q' Enter
tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200Essential Commands
核心命令
| Action | Command |
|---|---|
| Send text | |
| Send Enter/Ctrl-C | |
| Capture output | |
| List sessions | |
| Kill session | |
| Kill server | |
| 操作 | 命令 |
|---|---|
| 发送文本 | |
| 发送回车/Ctrl-C | |
| 捕获输出内容 | |
| 列出会话 | |
| 终止会话 | |
| 终止服务器 | |
Conventions
约定规范
- Socket: env var (default
TMUX_SOCKET_DIR)${TMPDIR:-/tmp}/tmux-sockets - Target format: (defaults to
session:window.pane):0.0 - Python REPLs: Set to avoid readline issues
PYTHON_BASIC_REPL=1
- Socket: 环境变量(默认值为
TMUX_SOCKET_DIR)${TMPDIR:-/tmp}/tmux-sockets - 目标格式: (默认值为
session:window.pane):0.0 - Python REPL: 设置以避免readline问题
PYTHON_BASIC_REPL=1
Helper Scripts
辅助脚本
bash
./scripts/find-sessions.sh -S "$SOCKET" # list sessions
./scripts/find-sessions.sh --all # scan all sockets
./scripts/wait-for-text.sh -t sess:0.0 -p 'pattern' [-T 20] [-i 0.5]bash
./scripts/find-sessions.sh -S "$SOCKET" # list sessions
./scripts/find-sessions.sh --all # scan all sockets
./scripts/wait-for-text.sh -t sess:0.0 -p 'pattern' [-T 20] [-i 0.5]Parallel Agents Example
并行Agent示例
bash
SOCKET="${TMPDIR:-/tmp}/agents.sock"
for i in 1 2 3; do tmux -S "$SOCKET" new-session -d -s "agent-$i"; done
tmux -S "$SOCKET" send-keys -t agent-1 "codex --yolo 'Fix bug'" Enterbash
SOCKET="${TMPDIR:-/tmp}/agents.sock"
for i in 1 2 3; do tmux -S "$SOCKET" new-session -d -s "agent-$i"; done
tmux -S "$SOCKET" send-keys -t agent-1 "codex --yolo 'Fix bug'" EnterPoll for completion
轮询是否完成
tmux -S "$SOCKET" capture-pane -p -t agent-1 -S -3 | grep -q "❯" && echo "Done"
undefinedtmux -S "$SOCKET" capture-pane -p -t agent-1 -S -3 | grep -q "❯" && echo "Done"
undefined