apri il terminale gnome con diverse schede ed esegui alcuni comandi in ogni scheda


12

Questo è quello che voglio realizzare:

  1. Voglio aprire un terminale Gnome con cinque schede al suo interno
  2. Voglio eseguire automaticamente una serie di comandi (5-10 comandi) in ciascuna scheda
    Prima scheda: imposta la visualizzazione in maiuscolo e successivamente esegue uno o più comandi
    Seconda scheda: accede a un server ed esegue alcuni comandi
    Terza scheda: deve eseguire solo alcuni comandi

gnome-terminal --geometry=260x25-0+0 --tab -e "csh -c \"ct setview myViewName; cal\"" –tab --tab --tab (funziona bene, la vista è impostata ma nessun comando eseguito successivamente)

Ho provato a farlo in questo modo ed eseguendolo nello script seguente:

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 rimuovo le exec gnome-terminal --geometry 125x49-0+81 –tabrighe dall'esempio e chiamo uno script da qualche altro file, funziona benissimo - mi collego al server e tutti i comandi vengono eseguiti. Qualcuno può aiutarmi a risolvere questo?

Scrivere uno script che chiamo per ogni scheda non è un'opzione, dato che alla fine avrò 5 terminali con 5-7 schede in ciascuno, e ciò significa che scriverebbero 25-30 script (costa più di quanto aiuti nel mio problema).


Non che io sia un esperto di GNOME Terminal, ma le schede che crei dovrebbero essere salvate in un profilo. Dopo aver creato il profilo, credo che tu possa scriverlo. Vedi Gestisci i profili nella Guida di GNOME.
eyoung100,

Risposte:


11

Questo sembra funzionare sulla mia macchina:

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

Nota, non appena i processi eseguiti da -e sono stati eseguiti, si chiuderanno. In questo caso, bash viene caricato, esegue qualunque comando gli passi e esiste immediatamente. Ho inserito le istruzioni di lettura per attendere l'input dell'utente. In questo modo quelle schede non si chiuderanno fino a quando non si preme un tasto, così da poterlo vedere in questo esempio. Senza di essi, sembrerebbe che si siano aperte solo due schede, poiché le altre due verrebbero eseguite e chiuse troppo rapidamente.


grazie per la tua risposta. Certo, riesco a vedere l'output di un comando (in questo caso "data") ma vorrei eseguire diversi comandi, essere in grado di vedere l'output e quindi continuare a scrivere nuovi comandi manualmente nella stessa scheda.
ekido

3

Poiché bash si chiude al termine del comando, è possibile chiamare un'altra istanza di bashafter il comando per ottenere una shell interattiva:

gnome-terminal  --tab -e "bash -c 'ps -ef; bash'" --tab -e "bash -c 'ls; bash'" --tab -e "bash -c 'top -n 1; bash'"

sembra che se chiudo il terminale i processi sottostanti non si chiudono automaticamente, c'è una soluzione anche a questo? Vorrei chiudere l'intera finestra e tutte le schede con i loro processi dovrebbero essere uccise
Blub

2

Salva sotto come 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

aggiungi script.sh a $ PATH, quindi eseguilo

gnome-terminal -x script.sh

Vedi Apri una nuova scheda in gnome-terminal usando la riga di comando .


tutto il resto a parte questo. Ora, vorrei avere alcune delle schede aperte senza un comando. Ad esempio, vorrei avere dieci schede aperte, ma tre se fossero in grado di eseguire alcuni comandi come htop ..
nyxee,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.