내 tmux.conf
파일에서는 창 열기, 창 이름 지정, 창 설정 등을 구성합니다.
그러나 내가 가진 한 가지 문제는 창 중 하나가 명령을 시작하면 ls
명령이 완료된 후 해당 창이 자체적으로 (즉시) 닫힌다는 것입니다. 이 동작을 방지할 수 있는 방법이 있나요? 아니면 명령이 완료된 후 일반 셸로 돌아가도록 하시겠습니까?
나는 창이 시작될 때 쉘을 시작해야 한다고 가정하고 -> 명령을 실행하지만, 그렇게 하는 방법을 알아낼 수 있다면 망할 것입니다. 이 문제에 대해 Google에서 검색했지만 답변을 찾지 못했습니다.
답변1
몇 가지 옵션이 있습니다.
창에서 실행하는 대신
ls
쉘을 실행하고 쉘 키 입력을 보내 실행하십시오.tmux start-server tmux new-session -d -s session tmux new-window -t session:1 tmux send-keys -t session:1 ls C-m
다른 명령을 실행한 후 bash 셸이 남도록 일련의 명령을 실행할 수 있습니다.
tmux start-server tmux new-session -d tmux new-window 'ls;bash -i'
바라보다제이슨 소변의 답변
remain-on-exit
출력을 볼 수 있도록 프로세스가 종료된 후에도 창을 활성 상태로 유지하는 옵션에 대한 자세한 내용입니다 .명령의 출력을 살펴볼 가치가 있다면 새로 고칠 가치가 있을 것입니다. 무언가의 출력을 모니터링하는 경우
watch
주기적으로 새로운 출력을 얻을 수 있습니다. 이는 다음 창에서 잘 작동합니다tmux
.tmux start-server tmux new-session -d tmux new-window 'watch -n 60 ls'
답변2
다음 remain-on-exit
옵션을 사용할 수 있습니다.
출구로 나가세요 [떠나세요]
이 플래그가 설정된 창은 실행 중인 프로그램이 종료될 때 삭제되지 않습니다. respawn-window 명령을 사용하여 창을 다시 활성화할 수 있습니다.
리스폰 프로세스를 단순화하려면 이를 키에 바인딩할 수 있습니다.
bind-key R respawn-window
이렇게 하면 데드 창을 남기지 않고 프로그램이 종료됩니다.
답변3
send-keys
다음은 @Caleb이 권장하는 접근 방식을 사용한 확장된 예입니다.
#!/bin/sh
tmux start-server
tmux new-session -d -n 'mywindowname'
tmux send-keys -t mywindowname 'cd notes' Enter 'vim whiteboard/tasks.md' Enter
tmux new-window -d -n 'secondwindowname' # this -d prevents focus from changing to the new window
tmux -2 attach-session -d
답변4
&& bash
아마도 명령 뒤에 추가하면 충분할 것입니다.
내 예:
tmux new-session -d 'ls && echo && bash' \; split-window -d 'vi' \; attach