Respostas:
Usar:
tmux split-window "shell command"
O split-window
comando tem a seguinte sintaxe:
split-window [-dhvP] [-c start-directory] [-l size | -p percentage] [-t target-pane] [shell-command] [-F format]
(de man tmux
, seção "Janelas e painéis"). Observe que a ordem é importante - o comando deve vir após qualquer uma das opções anteriores que aparecem e deve ser um argumento único; portanto, é necessário citá-lo se houver espaços.
Para comandos como ping -c
esse terminam rapidamente, você pode definir a remain-on-exit
opção primeiro:
tmux set-option remain-on-exit on
tmux split-window 'ping -c 3 127.0.0.1'
O painel permanecerá aberto após a ping
conclusão, mas será marcado como "morto" até você fechá-lo manualmente.
Se você não deseja alterar as opções gerais, existe outra abordagem. O comando é executado sh -c
e você pode explorar isso para manter a janela ativa no final:
tmux split-window 'ping -c 3 127.0.0.1 ; read'
Aqui você usa o read
comando shell para aguardar uma nova linha de entrada do usuário após a conclusão do comando principal. Nesse caso, a saída do comando permanecerá até você pressionar Enterno painel e, em seguida, fechará automaticamente.
remain-on-exit
ou usar cmd ; read
.
bash --rcfile
Essa técnica abre um novo shell, executa comandos e o deixa lá após a conclusão dos comandos:
tmux-split-cmd() ( tmux split-window -dh -t $TMUX_PANE "bash --rcfile <(echo '. ~/.bashrc;$*')" )
tmux-split-cmd 'cd; pwd; ping google.com'
Ou se o comando não tiver caracteres especiais de terminal, como ;
apenas:
tmux-split-cmd ping google.com
Isso usa:
--rcfile
: Como invocar o bash, executar comandos dentro do novo shell e, em seguida, devolver o controle ao usuário? | Estouro de pilhaTMUX_PANE
: Como dividir a janela que executou o comando "tmux split-window" em vez do comando atual?Outra 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 "$@"
)
que mata a divisão anterior, se ela já existir, e ajuda a manter apenas uma divisão extra o tempo todo.
man tmux | less -p remain-on-exit
...