Você pode fazê-lo com o tmux encadeando juntos a janela dividida e as chaves de envio como esta:
tmux new session \; split-window -v \; send-keys 'ping -t 5 google.com' C-m \; split-window -h \; send-keys 'ping -t 10 microsoft.com' C-m \;
Estou tentando descobrir como criar um comando chamado runbg
que aceitará subcomandos para serem executados em segundo plano e criar uma tela dividida para cada subcomando. Quando um subcomando é concluído com sucesso, a tela dividida é fechada; Se um subcomando falhar, a tela permanecerá aberta com o erro até que o usuário feche a tela com o sinal de término. Quando todas as telas estiverem fechadas, o comando estará concluído e a execução continuará. Por exemplo,
runbg "ping -t 5 google.com" "ping -t 10 microsoft.com"
echo "done"
Eu descobri que posso fazer:
ping -t 5 google.com &
ping -t 10 microsoft.com &
wait
O que realiza o lado paralelo das coisas, no entanto, cada comando envia tudo para o mesmo terminal, o que é muito barulhento. Daí o desejo de uma configuração de tela dividida.
Pesquisando aqui, descobri Tela GNU que parece lidar com o lado da tela das coisas , mas parece que requer um arquivo .screenrc - que, embora seja possível fazer programaticamente, é um pouco chato, como eu imagino que isso significaria que eu precisaria escrever um arquivo tmp aleatório em algum lugar.
Eu encontrei esta resposta que entra em tela sem o .sreenrc
, mas não consigo descobrir como faça o material da tela dividida nele.
Então, resumindo:
runbg
? .screenrc
ou existe uma maneira de realizar as telas divididas sem uma? Você pode fazê-lo com o tmux encadeando juntos a janela dividida e as chaves de envio como esta:
tmux new session \; split-window -v \; send-keys 'ping -t 5 google.com' C-m \; split-window -h \; send-keys 'ping -t 10 microsoft.com' C-m \;
Tags gnu-screen