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


28

나는 시도했다

tmux -c "shell command" split-window

그러나 작동하지 않는 것 같습니다.

를 사용 tmux split-window하면 새 창을 분할 할 수 있습니다.

업데이트 :

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


4
man tmux | less -p remain-on-exit...
jasonwryan

답변:


38

용도:

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'Windows 및 창'섹션 참조) 명령이 와야 - 참고 순서가 중요하다고 후에 나타납니다 그 위의 옵션 중 하나, 당신이 그것을 공백이있는 경우를 인용 할 필요가 그래서는 하나의 인자이어야한다.


이와 같은 명령을 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마지막에 창을 활성 상태로 유지하기 위해이를 활용할 수 있습니다.

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

여기서는 read기본 명령이 완료된 후 쉘 명령을 사용하여 사용자 입력 줄 바꾸기를 기다립니다. 이 경우 Enter창에서 를 누를 때까지 명령 출력이 유지 된 다음 자동으로 닫힙니다.


감사합니다 Michawl Homer :-). 나는 지금도 그것을 발견했다. 그러나 새 창을 닫지 않으려면 어떻게해야합니까?
atupal

@atupal : 편집 remain-on-exit또는 설정 참조 cmd ; read.
Michael Homer

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 "$@"
)

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.