tmux

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

tmux 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 -200
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 -200

Essential Commands

核心命令

ActionCommand
Send text
tmux -S "$SOCKET" send-keys -t target -l -- "$cmd"
Send Enter/Ctrl-C
tmux -S "$SOCKET" send-keys -t target Enter
/
C-c
Capture output
tmux -S "$SOCKET" capture-pane -p -J -t target -S -200
List sessions
tmux -S "$SOCKET" list-sessions
Kill session
tmux -S "$SOCKET" kill-session -t "$SESSION"
Kill server
tmux -S "$SOCKET" kill-server
操作命令
发送文本
tmux -S "$SOCKET" send-keys -t target -l -- "$cmd"
发送回车/Ctrl-C
tmux -S "$SOCKET" send-keys -t target Enter
/
C-c
捕获输出内容
tmux -S "$SOCKET" capture-pane -p -J -t target -S -200
列出会话
tmux -S "$SOCKET" list-sessions
终止会话
tmux -S "$SOCKET" kill-session -t "$SESSION"
终止服务器
tmux -S "$SOCKET" kill-server

Conventions

约定规范

  • Socket:
    TMUX_SOCKET_DIR
    env var (default
    ${TMPDIR:-/tmp}/tmux-sockets
    )
  • Target format:
    session:window.pane
    (defaults to
    :0.0
    )
  • Python REPLs: Set
    PYTHON_BASIC_REPL=1
    to avoid readline issues
  • Socket:
    TMUX_SOCKET_DIR
    环境变量(默认值为
    ${TMPDIR:-/tmp}/tmux-sockets
  • 目标格式:
    session:window.pane
    (默认值为
    :0.0
  • Python REPL: 设置
    PYTHON_BASIC_REPL=1
    以避免readline问题

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'" Enter
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'" Enter

Poll for completion

轮询是否完成

tmux -S "$SOCKET" capture-pane -p -t agent-1 -S -3 | grep -q "❯" && echo "Done"
undefined
tmux -S "$SOCKET" capture-pane -p -t agent-1 -S -3 | grep -q "❯" && echo "Done"
undefined