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
이를 통해 꽤 일반적인 작업을 실행할 수 있었고 보기에는 흉해 보이지만 꽤 기능적입니다.
다른 사람들이 같은 것을 찾고 있을 경우를 대비해 여기에 남겨두세요.
답변3
마지막에 종료하지 않고 짧은 명령을 실행하려면 다음을 수행하십시오.
tmux \
new-session 'ls ; bash' \; \
split-window 'ls ; bash'
또는
tmux \
new-session 'ls ; bash' \; \
new-window 'ls ; bash'