Odpowiedzi:
Posługiwać się:
tmux split-window "shell command"
split-window
Komenda ma następującą składnię:
split-window [-dhvP] [-c start-directory] [-l size | -p percentage] [-t target-pane] [shell-command] [-F format]
(z man tmux
sekcji „Windows i panele”). Zauważ, że kolejność jest ważna - polecenie musi nastąpić po którejkolwiek z poprzednich opcji, które się pojawią, i musi to być pojedynczy argument, więc musisz go zacytować, jeśli ma spacje.
W przypadku takich poleceń, ping -c
które kończą się szybko, możesz najpierw ustawić remain-on-exit
opcję:
tmux set-option remain-on-exit on
tmux split-window 'ping -c 3 127.0.0.1'
Okienko pozostanie otwarte po ping
zakończeniu, ale będzie oznaczone jako „martwe”, dopóki nie zamkniesz go ręcznie.
Jeśli nie chcesz zmieniać ogólnych opcji, istnieje inne podejście. Polecenie jest uruchamiane za pomocą sh -c
, i możesz wykorzystać to, aby okno pozostało przy życiu na końcu:
tmux split-window 'ping -c 3 127.0.0.1 ; read'
Tutaj używasz read
polecenia powłoki, aby poczekać na nowy wiersz wprowadzony przez użytkownika po zakończeniu polecenia głównego. W takim przypadku dane wyjściowe polecenia pozostaną do momentu naciśnięcia Enterw panelu, a następnie zostaną automatycznie zamknięte.
remain-on-exit
lub użyj cmd ; read
.
bash --rcfile
Ta technika otwiera nową powłokę, uruchamia polecenia i pozostawia cię tam po zakończeniu poleceń:
tmux-split-cmd() ( tmux split-window -dh -t $TMUX_PANE "bash --rcfile <(echo '. ~/.bashrc;$*')" )
tmux-split-cmd 'cd; pwd; ping google.com'
Lub jeśli polecenie nie ma specjalnych znaków terminalu, takich jak ;
:
tmux-split-cmd ping google.com
Wykorzystuje to:
--rcfile
: Jak wywołać bash, uruchomić polecenia w nowej powłoce, a następnie oddać kontrolę użytkownikowi? | Przepełnienie stosuTMUX_PANE
: Jak podzielić okno, w którym uruchomiono polecenie „tmux split-window” zamiast bieżącego?Innym interesującym wariantem jest:
tmux-split-cmd-uniq() (
if [ "$(tmux list-panes | wc -l | cut -d' ' -f1)" -ne 1 ]; then
tmux kill-pane -t 1
fi
tms "$@"
)
który zabija poprzedni podział, jeśli już istnieje, i pomaga zachować tylko jeden dodatkowy podział przez cały czas.
man tmux | less -p remain-on-exit
...