여러 명령을 실행하는 tmux 스크립트

여러 명령을 실행하는 tmux 스크립트

Bash 스크립트에 다음을 어떻게 작성할 수 있습니까?

tmux # Start tmux session.
compass watch /path/to/project1/compass/ # Run the first process.
Ctrl + B, " # Split the pane.
compass watch /path/to/project2/compass/ # Run the second process.
Ctrl + B, D # Exit the session.

답변1

tmux \
    new-session  'compass watch /path/to/project1/compass/' \; \
    split-window 'compass watch /path/to/project2/compass/' \; \
    detach-client

new-session새 세션을 생성하는 명령 과 tmux현재 split-window창을 두 개의 창으로 분할하는 명령은 tmux선택적 셸 명령을 사용하여 실행됩니다. detach-client결국에는 분명합니다 .

수평 분할(두 개의 창을 나란히 표시)을 원하는 경우 split-window -h위 명령에서 사용하세요.

여러 tmux명령을 보낼 때는 tmux로 구분해야 합니다 ;. 을(를) 인용/이스케이프 처리하여( , 또는 ) ;을 셸에서 보호해야 셸 이 이를 명령의 끝으로 해석하는 것을 방지할 수 있습니다 .';'";"\;tmux

가독성을 위해 전체 내용을 별도의 줄로 나누었습니다. 스크립트에서 이 작업을 수행하는 경우(권장함) \각 줄의 마지막 부분 뒤에 아무것도 없는지 확인하세요.

tmux a, tmux attach또는 tmux attach-session(모두 동일함)을 사용하여 세션에 다시 연결합니다 .

tmux두 명령이 모두 실행되면 세션이 종료됩니다 .

답변2

이것은 나에게 효과가 없었습니다(나는 'ls -la'와 같은 작업을 시도하고 있었습니다). 무엇을 했는지:

tmux new-session -d bash
tmux split-window -h bash
#sends keys to first and second terminals
tmux send -t 0:0.0 "<my-first-command>" C-m
tmux send -t 0:0.1 "<my-second-command>" C-m
tmux -2 attach-session -d

이를 통해 꽤 일반적인 작업을 실행할 수 있었고 보기에는 흉해 보이지만 꽤 기능적입니다.

다른 사람들이 같은 것을 찾고 있을 경우를 대비해 여기에 남겨두세요.

원천:https://gist.github.com/kizzx2/4739236

답변3

마지막에 종료하지 않고 짧은 명령을 실행하려면 다음을 수행하십시오.

tmux \
    new-session  'ls ; bash' \; \
    split-window 'ls ; bash' 

또는

tmux \
    new-session  'ls ; bash' \; \
    new-window   'ls ; bash' 

관련 정보