Abra la terminal de GNOME con varias pestañas y ejecute algunos comandos en cada pestaña

12

Esto es lo que quiero lograr:

  1. Quiero abrir un terminal de gnomo con cinco pestañas
  2. Quiero ejecutar un conjunto de comandos (5 - 10 comandos) en cada pestaña automáticamente
    Primera pestaña: establecerá una vista clara y luego ejecutará uno o más comandos
    Segunda pestaña: iniciará sesión en un servidor y ejecutará algunos comandos
    Tercera pestaña: solo ejecutará algunos comandos

gnome-terminal --geometry=260x25-0+0 --tab -e "csh -c \"ct setview myViewName; cal\"" –tab --tab --tab (funciona bien, la vista está configurada pero no se ejecuta ningún comando después de eso)

Intenté hacerlo de esta manera y ejecuté esto en el script a continuación:

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 

Si elimino las exec gnome-terminal --geometry 125x49-0+81 –tabfilas del ejemplo y llamo a un script desde otro archivo, funciona bien: me conecto al servidor y se ejecutan todos los comandos. puede alguien ayudarme a resolver esto?

Escribir un script que llamo para cada pestaña no es una opción, ya que tendré 5 terminales con 5-7 pestañas en cada una, y eso significa que sería de 25 a 30 scripts para escribir (cuesta más de lo que ayuda en mi problema)

ekido
fuente
No es que sea un experto en GNOME Terminal, pero las pestañas que cree deben guardarse en un perfil. Después de crear el perfil, creo que puedes escribirlo. Consulte Administrar perfiles en la Ayuda de GNOME.
eyoung100

Respuestas:

11

Esto parece funcionar en mi 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

Tenga en cuenta que tan pronto como los procesos ejecutados por -e terminen de ejecutarse, finalizarán. En este caso, bash se carga, ejecuta cualquier comando que le pase e inmediatamente existe. Puse las declaraciones de lectura para esperar la entrada del usuario. De esta manera, esas pestañas no se cerrarán hasta que presione una tecla, solo para que pueda verla en este ejemplo. Sin ellos, parecería que solo se abren dos pestañas, porque las otras dos se ejecutarían y cerrarían demasiado rápido.

Unix-Ninja
fuente
gracias por tu respuesta. Claro, puedo ver la salida de un comando (en este caso, "fecha") pero me gustaría ejecutar varios comandos, poder ver la salida y luego continuar escribiendo nuevos comandos manualmente en la misma pestaña.
ekido
3

Como bash se cierra después de que se completa el comando, puede llamar a otra instancia bashdespués de su comando para obtener un shell interactivo:

gnome-terminal  --tab -e "bash -c 'ps -ef; bash'" --tab -e "bash -c 'ls; bash'" --tab -e "bash -c 'top -n 1; bash'"
Jean Spector
fuente
parece que si cierro el terminal, los procesos subyacentes no se cierran automáticamente, ¿hay alguna solución para esto también? Me gustaría cerrar toda la ventana y todas las pestañas con sus procesos deberían ser
eliminadas
1

Guardar a continuación 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

agregue script.sh a $ PATH y luego ejecútelo

gnome-terminal -x script.sh

Consulte Abrir una nueva pestaña en gnome-terminal usando la línea de comandos .

rofrol
fuente
todo lo demás falló aparte de esto. Ahora, me gustaría tener algunas de las pestañas abiertas sin un comando. Por ejemplo, me gustaría tener diez pestañas abiertas, pero tres si pudieran estar ejecutando algunos comandos como htop ..
nyxee