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 êxito, a tela dividida é fechada; se um subcomando falhar, a tela permanece aberta com o erro até que o usuário feche a tela com o sinal de encerramento. Assim que todas as telas forem fechadas, o comando será 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, porém cada comando envia tudo para o mesmo terminal, o que é muito barulhento. Daí o desejo de uma configuração de tela dividida.
Pesquisando aqui, descobriTela GNUque parece lidar com o lado da tela, mas parece que requer um arquivo .screenrc - o que, embora seja possível fazer programaticamente, é um pouco chato, pois imagino que isso significaria que eu precisaria escrever um arquivo tmp aleatório em algum lugar .
eu encontreiesta respostaque envolve o uso da tela sem, .sreenrc
no entanto, não consigo descobrir como fazer a tela dividida nela.
Resumindo:
- Existe algo que já faz a funcionalidade que pretendo
runbg
? - Se não, o GNU Screen é o que eu quero para isso? Preciso usar um
.screenrc
arquivo ou existe uma maneira de realizar as telas divididas sem ele?
Responder1
Você pode fazer isso com o tmux agrupando janelas divididas e 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 \;