실행중인 tmux 세션에서 tmux 창으로 명령 실행 또는 전송 new-window -n:mywindow ‘exec something’ 새로 만든 창에 명령을

명명 된 tmux 세션에 첨부 할 쉘 스크립트를 작성하고 해당 세션에서 창 (또는 창)을 선택한 다음 선택한 창 (또는 창)에서 명령을 실행하려고합니다.

bash 스크립트에서 어떻게합니까?

알아

tmux new-window -n:mywindow 'exec something'

새로 만든 창에 명령을 보낼 수 있지만 다음과 같은 것이 필요합니다.

tmux select-window -t:0 'my command'

사용할 수는 send-keys있지만 명령 또는 실행되는 명령 목록이 필요한 것으로 보입니다.



답변

tmux 창은 단일 pty (의사 tty)에 대한 인터페이스입니다. 분리되지 않은 창에는 단일 창이 있습니다. 분할 창에는 여러 개의 창이 있습니다.

tmux 는 초기 명령으로 시작된 분할 창에 추가 프로세스를 추가하는 방법을 제공하지 않습니다. 해당 터미널에 대한 작업 제어 1 을 제공하는 것은 해당 초기 명령 프로세스 (일반적으로 쉘)에 달려 있습니다.

창에서 현재 실행중인 항목을 클로버하려는 경우 respawn-pane -k기존 명령을 종료하고 새 명령 (예 :)으로 바꾸는 데 사용할 수 있습니다 respawn-pane -t sessionname:0.4 -k 'some -new command'.

그러나 현재 창에서 실행중인 항목을 유지하려면 단순히 “입력”하는 더 나은 옵션이 없을 수도 있습니다 send-keys.

다음과 같이 스크립트를 작성해도됩니다 (마지막으로 첨부하십시오.

session=whatever
window=${session}:0
pane=${window}.4
tmux send-keys -t "$pane" C-z 'some -new command' Enter
tmux select-pane -t "$pane"
tmux select-window -t "$window"
tmux attach-session -t "$session"

온, 그 주 send-keys명령, 실제로 문자를 입력해야
E n t e r말해, tmux창에 줄 바꿈 키를 보낼 수 있습니다. 당연히 모든 명령은 Enter키로 끝납니다 .


1 작업 제어는 tty를 제어 터미널로 사용하는 단일 세션의 여러 프로세스 그룹 간의 중재입니다. 즉는는 Ctrl+ Z키 중단하고 jobs, fg그리고 bg쉘 명령.


답변

C-m대신 사용할 수 있습니다 Enter. 그건 같은거야. 또한, tmux쉽게 사용하여 왼쪽 / 오른쪽 창에 보낼 수 -t right또는 -t left. 다른 창에서 창에 주소를 지정하려면 창 번호와 마침표를 접두사로 지정하십시오 -t 0.right.

이제 간단한 Bash 함수를 작성하여 키 시퀀스를 인수로 가져 와서 대상 창으로 쉽게 보낼 수 있습니다.


답변