Risposte:
Uso:
tmux split-window "shell command"
Il split-window
comando ha la sintassi seguente:
split-window [-dhvP] [-c start-directory] [-l size | -p percentage] [-t target-pane] [shell-command] [-F format]
(dalla man tmux
sezione "Finestre e riquadri"). Si noti che l'ordine è importante: il comando deve venire dopo una qualsiasi di quelle opzioni precedenti che appaiono e deve essere un singolo argomento, quindi è necessario citarlo se ha spazi.
Per comandi come ping -c
quello terminano rapidamente, puoi prima impostare l' remain-on-exit
opzione:
tmux set-option remain-on-exit on
tmux split-window 'ping -c 3 127.0.0.1'
Il riquadro rimarrà aperto al ping
termine, ma sarà contrassegnato come "morto" fino a quando non verrà chiuso manualmente.
Se non si desidera modificare le opzioni generali, esiste un altro approccio. Il comando viene eseguito con sh -c
e puoi sfruttarlo per rendere la finestra viva alla fine:
tmux split-window 'ping -c 3 127.0.0.1 ; read'
Qui si utilizza il read
comando shell per attendere una newline di input dell'utente al termine del comando principale. In questo caso, l'output del comando rimarrà finché non si preme Enternel riquadro, quindi si chiuderà automaticamente.
remain-on-exit
o usa cmd ; read
.
bash --rcfile
Questa tecnica apre una nuova shell, esegue i comandi e ti lascia lì al termine dei comandi:
tmux-split-cmd() ( tmux split-window -dh -t $TMUX_PANE "bash --rcfile <(echo '. ~/.bashrc;$*')" )
tmux-split-cmd 'cd; pwd; ping google.com'
O se il comando non ha caratteri terminali speciali come ;
solo:
tmux-split-cmd ping google.com
Questo utilizza:
--rcfile
: Come invocare bash, eseguire comandi all'interno della nuova shell e quindi restituire il controllo all'utente? | Stack OverflowTMUX_PANE
: Come dividere la finestra che ha eseguito il comando "tmux split-window" invece di quello corrente?Un'altra variante interessante è:
tmux-split-cmd-uniq() (
if [ "$(tmux list-panes | wc -l | cut -d' ' -f1)" -ne 1 ]; then
tmux kill-pane -t 1
fi
tms "$@"
)
che uccide la divisione precedente se esiste già e aiuta a mantenere solo una divisione aggiuntiva in ogni momento.
man tmux | less -p remain-on-exit
...