tmux를 사용하여 새 창을 분할하고 이 새 창에서 명령을 실행하는 방법은 무엇입니까?

tmux를 사용하여 새 창을 분할하고 이 새 창에서 명령을 실행하는 방법은 무엇입니까?

나는 열심히 노력했다

tmux -c "shell command" split-window

하지만 작동하지 않는 것 같습니다.

tmux split-window새 창을 분할하는 데 사용합니다 .

고쳐 쓰다:

을 사용하면 tmux split-window 'exec ping g.cn'ping 명령을 실행할 수 있지만 중지되면 새 창이 닫힙니다.

답변1

사용:

tmux split-window "shell command"

명령 split-window의 구문은 다음과 같습니다.

 split-window [-dhvP] [-c start-directory] [-l size | -p percentage] [-t
         target-pane] [shell-command] [-F format]

(에서man tmux, "창 및 창" 섹션). 순서가 중요합니다. 명령이 와야 합니다.뒤쪽에나타나는 이전 옵션은 단일 인수여야 하므로 공백이 있는 경우 인용해야 합니다.


이와 같이 빠르게 종료되는 명령의 경우 옵션을 먼저 설정할 ping -c수 있습니다 .remain-on-exit

tmux set-option remain-on-exit on
tmux split-window 'ping -c 3 127.0.0.1'

창은 완료 후에도 열린 상태로 유지되지만 ping수동으로 닫을 때까지 "죽음"으로 표시됩니다.

전체 옵션을 변경하고 싶지 않다면 다른 방법이 있습니다. 이 명령은 sh -c마지막에 창을 활성 상태로 유지하는 데 활용할 수 있는 run 을 사용합니다.

tmux split-window 'ping -c 3 127.0.0.1 ; read'

여기에는 쉘이 사용됩니다.read이 명령은 주 명령이 완료된 후 사용자가 개행 문자를 입력할 때까지 기다립니다. 이 경우 명령 출력은 Enter창을 누를 때까지 유지되다가 자동으로 닫힙니다.

답변2

bash --rcfile

이 기술은 새 셸을 열고 명령을 실행한 후 명령이 완료된 후 그대로 유지됩니다.

tmux-split-cmd() ( tmux split-window -dh -t $TMUX_PANE "bash --rcfile <(echo '. ~/.bashrc;$*')" )
tmux-split-cmd 'cd; pwd; ping google.com'

또는 명령에 특수 터미널 문자가 없는 경우(예 ;:

tmux-split-cmd ping google.com

이는 다음을 사용합니다:

또 다른 흥미로운 변형은 다음과 같습니다.

tmux-split-cmd-uniq() (
  if [ "$(tmux list-panes | wc -l | cut -d' ' -f1)" -ne 1 ]; then
    tmux kill-pane -t 1
  fi
  tms "$@"
)

이미 존재하는 경우 이전 분할을 종료하고 항상 추가 분할을 하나만 유지하는 데 도움이 됩니다.

답변3

내가 제안 할게

tmux split-window
tmux send "ping -c 3 127.0.0.1" ENTER

이점은 새 창이 항상 활성화되고 절대 닫히지 않는 반면, 이전 답변은 tmux split-window 'ping -c 3 127.0.0.1 ; read'사용자가 를 누른 후 세션을 닫는다는 것입니다 Enter.

관련 정보