Guia programaticamente aberta no gnome-terminal, execute o comando e mantenha a guia aberta

12

Estou tentando escrever um comando que iniciará algumas guias de terminal, executará algo em cada guia e manterá cada uma delas aberta após a conclusão do comando, para que eu possa ver a saída e digitar mais comandos em cada guia

algo assim:

gnome-terminal --tab -e "ls -a" --tab -e "ls"

mas o problema é que as guias fecham assim que os comandos "ls" terminam. Alguém sabe como fazer com que as guias fiquem abertas?

Marca
fonte

Respostas:

11

O Gnome-terminal pode executar um comando ou abrir um shell, mas não ambos.

Há uma solução alternativa para fazer as duas coisas, encapsulando o comando e a subsequente invocação do shell em um comando.

$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""

Para obter mais alternativas, leia minha resposta para uma pergunta semelhante sobre estouro de pilha: /programming/3512055/avoid-gnome-terminal-close-after-script-execution/3531426#3531426

lesmana
fonte
10

Se você possui xdotoole wmctrlinstalou, o seguinte script de shell pode funcionar:

#!/usr/bin/env bash

window="$(xdotool search --class gnome-terminal | head -1)"
xdotool windowfocus $window
xdotool key ctrl+shift+t
xdotool type "$*"
xdotool key Return

Eu uso assim:

$ run-in-new-tab 'ls -l'

Encontrei essa idéia no blog da Trustin Lee .


fonte
Obrigado. Isso funciona muito bem. Eu tenho que adicionar um sleep 1depois do ctrl + shift + t para fazê-lo funcionar para mim. Eu vou aceitar isso, se nada mais vem à tona em breve
Sim - eu descobri que tinha que sleep 2fazê-lo funcionar 100% do tempo. Grande solução - embora eu estou agora a abrir 8 abas, que ssh em vários servidores, iniciar vários processos etc, usando o seguinte: a minha configuração da manhã é agora totalmente roteirizada :)
Max Williams
Na verdade wmctrlnão é necessário.
Nedim