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'