abra o terminal do gnome com várias abas e execute alguns comandos em cada aba

8

Isso é o que eu quero realizar:

  1. Eu quero abrir um terminal do gnome com cinco guias
  2. Eu quero executar um conjunto de comandos (5 - 10 comandos) em cada guia automaticamente
    Primeira aba: deve definir a exibição clara do caso e depois disso executar um ou mais comandos
    Segunda aba: deve entrar em um servidor e executar alguns comandos
    Terceira aba: só deve executar alguns comandos

gnome-terminal --geometry=260x25-0+0 --tab -e "csh -c \"ct setview myViewName; cal\"" –tab --tab --tab (funciona bem, a vista está definida, mas nenhum comando foi executado depois disso)

Eu tentei fazer isso dessa maneira e executar isso no script abaixo:

gnome-terminal --geometry 125x18-0-26 --tab -t "some title" -e /home/ekido/Desktop/MyScripts/myScript

#!/usr/bin/expect
exec gnome-terminal --geometry 125x49-0+81 –tab
spawn ssh usert@server
expect "password"
send "*******\r"
expect "user@server100:~>"
send “some command\r"
expect "user@server100:~>"
send “some command"
interact 

Se eu remover as linhas exec gnome-terminal --geometry 125x49-0+81 –tab do exemplo e chamar um script de algum outro arquivo, ele funcionará bem - eu entro no servidor e todos os comandos são executados. Alguém pode me ajudar a resolver isso?

Para escrever um script que eu chamo para cada guia não é uma opção, já que eu terei 5 terminais com 5-7 guias em cada no final, e isso significa que seriam 25 a 30 scripts para escrever (custo mais do que ajuda no meu problema).

    
por ekido 30.09.2014 / 16:31

3 respostas

7

Isso parece funcionar na minha máquina:

gnome-terminal --geometry=260x25-0+0 --tab -e "bash -c 'date; read -n1'" --tab -e "bash -c 'echo meow; read -n1' " --tab --tab

Por favor, note que assim que os processos executados por -e terminarem, eles serão encerrados. Nesse caso, o bash é carregado, executa todos os comandos que você passa para ele e existe imediatamente. Eu coloquei as instruções de leitura para aguardar a entrada do usuário. Dessa forma, essas guias não serão fechadas até que você pressione uma tecla, apenas para vê-la neste exemplo. Sem eles, seria como se apenas duas abas fossem abertas, porque as outras duas seriam executadas e fechadas muito rapidamente.

    
por 30.09.2014 / 17:10
3

Como o bash sai depois que o comando é concluído, você pode chamar outra instância de bash após o comando para obter um shell interativo:

gnome-terminal  --tab -e "bash -c 'ps -ef; bash'" --tab -e "bash -c 'ls; bash'" --tab -e "bash -c 'top -n 1; bash'"
    
por 05.11.2017 / 22:55
0

salve abaixo como script.sh

#!/usr/bin/env bash

me=$(realpath $0)

commands=(
"echo"
"ls -l && echo 'yes'"
"top"
"ps"
)
len=${#commands[@]}

if [ $# -eq 0 ];then
    num=$len
else
    num=$1
fi

n=$((len-num))
command=${commands[$n]}
num=$((num-1))

xdotool key ctrl+shift+t

if [ $num -gt -1 ]; then
    sleep 1; xdotool type --delay 1 --clearmodifiers "$me $num; ${command}"; xdotool key Return;
fi

adicione script.sh ao $ PATH e execute-o

gnome-terminal -x script.sh

link

    
por 25.03.2015 / 23:21