Dev 환경이 되는 5 줄 셸 스크립트
tmux 일주일 쓰면 패턴 보일 거야: 매일 아침 같은 프로젝트 열고, 같은 window 만들고, 같은 명령 실행. tmux 의 커맨드라인 인터페이스가 전체 시퀀스를 셸 스크립트로 자동화하기 충분히 풍부해. 스크립트 실행; 워크스페이스 뜸.
기본 레시피
tmux 의 커맨드라인이 new-session, send-keys, split-window 같은 서브명령 받음. -d 로 detach 된 상태로 세션 생성해서 계속 설정 가능; -t 로 세션/window/pane 타깃; send-keys "cmd" C-m 으로 문자열과 Carriage-Return (Enter) 전송.
tmuxinator — 셸 스크립트가 복잡해질 때
복잡한 레이아웃엔 tmuxinator 가 YAML 기반 대안. 워크스페이스를 선언적으로 묘사; tmuxinator start project 가 띄움. Ruby gem 이고 다른 언어에 비슷한 도구 있어 (Python 의 tmuxp). 대부분 개인 프로젝트엔 10 줄 셸 스크립트면 충분.
SSH 통한 중첩 tmux
흔한 시나리오: 로컬에서 tmux 돌고, 자체 tmux 돌리는 서버에 SSH. 이제 Ctrl-a 가 모호 — 로컬 prefix 로 가나 리모트 거로? 두 깔끔한 해법:
- 머신별 다른 prefix. 로컬 tmux 가
Ctrl-a, 리모트 tmux 가Ctrl-b(기본). 충돌 X. - Send-prefix 바인딩. 둘 다 같은 prefix 써야 한다면, 각자 설정해서
Ctrl-a a가 아래 중첩된 거에 리터럴Ctrl-a보내게. 두 번 눌러서 안쪽 tmux 와 대화.
prefix + 명령 실행하는 자신 발견하면, 그게 작성 기다리는 스크립트야. 스크립트가 작성에 몇 분 걸리고 그 분들을 프로젝트 남은 동안 매일 아껴줘.발견 가능한 detach
tmux detach-client, tmux switch-client -t name, tmux send-keys -t name 'cmd' Enter — 모든 대화형 키가 비대화형 커맨드라인 짝 가져. 그게 자동화하는 방법.