tmux은(는) 무엇을 하나요?
기존 대화형 tmux 세션에 사용합니다. 일회성 명령에는 일반 셸을 사용하세요. 새로운 비대화형 백그라운드 작업에는 백그라운드 실행을 사용하세요.
기본
tmux ls
tmux list-windows -t shared
tmux list-panes -t shared:0
tmux capture-pane -t shared:0.0 -p
tmux capture-pane -t shared:0.0 -p -S -
형식: 세션:윈도우.팬, 예: shared:0.0.
입력 전송
리터럴 텍스트, Enter:
tmux send-keys -t shared:0.0 -l -- "Please continue"
tmux send-keys -t shared:0.0 Enter
특수 키:
tmux send-keys -t shared:0.0 C-c
tmux send-keys -t shared:0.0 C-d
tmux send-keys -t shared:0.0 Escape
임의의 텍스트에는 -l --를 사용하세요. 텍스트와 Enter를 분리하여 붙여넣기/개행 문제를 피하세요.
세션
tmux new-session -d -s worker
tmux rename-session -t old new
tmux kill-session -t worker
프롬프트 확인
tmux capture-pane -t worker-3 -p | tail -20
tmux capture-pane -t worker-3 -p | rg "proceed|permission|Yes|No|❯"
프롬프트가 이해되었을 때만 승인/선택:
tmux send-keys -t worker-3 -l -- "y"
tmux send-keys -t worker-3 Enter
헬퍼
scripts/find-sessions.sh: 세션 발견.scripts/wait-for-text.sh: 캡처된 팬 내용에 텍스트가 포함될 때까지 대기.
wait-for-text.sh는 프로세스 출력뿐만 아니라 에코된 입력과 스크롤백도 검색합니다. 명령 완료를 확인하려면 tmux로 전송된 명령에서 인수로 분할된 전체 텍스트를 가진 고유 마커를 사용하세요.
nonce="$(od -An -N8 -tx1 /dev/urandom | tr -d ' \n')"
marker="OPENCLAW_DONE_${nonce}"
tmux send-keys -t shared:0.0 -l -- "sleep 4; printf '%s%s\n' 'OPENCLAW_DONE_' '$nonce'"
tmux send-keys -t shared:0.0 Enter
scripts/wait-for-text.sh -t shared:0.0 -p "$marker" -F -T 30
에코된 명령에는 완전한 마커가 포함되지 않으며, 논스는 이전 완료 라인이 일치하는 것을 방지합니다.
참고
capture-pane -p는 스크립트용으로 stdout에 출력합니다.-S -는 전체 스크롤백을 캡처합니다.- tmux 세션은 SSH 연결 끊김에도 유지됩니다.