Voici ce que je veux accomplir:
- Je veux ouvrir un terminal gnome avec cinq onglets
- Je veux exécuter automatiquement un ensemble de commandes (5 à 10 commandes) dans chaque onglet
Premier onglet: doit définir la vue en clair et ensuite exécuter une ou plusieurs commandes
Deuxième onglet: doit se connecter à un serveur et exécuter certaines commandes
Troisième onglet: ne doit exécuter que certaines commandes
gnome-terminal --geometry=260x25-0+0 --tab -e "csh -c \"ct setview myViewName; cal\"" –tab --tab --tab
(fonctionne bien, la vue est définie mais aucune commande n'est exécutée après cela)
J'ai essayé de le faire de cette façon à la place et d'exécuter cela dans le script ci-dessous:
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 je supprime les exec gnome-terminal --geometry 125x49-0+81 –tab
lignes de l'exemple et appelle un script à partir d'un autre fichier, cela fonctionne très bien - je me connecte au serveur et toutes les commandes sont exécutées. Quelqu'un peut-il m'aider à résoudre ce problème?
Écrire un script que j'appelle pour chaque onglet n'est pas une option, car j'aurai 5 terminaux avec 5-7 onglets dans chacun à la fin, et cela signifie que ce serait 25 à 30 scripts à écrire (coûtent plus cher que cela aide dans mon problème).
la source
Réponses:
Cela semble fonctionner sur ma machine:
Veuillez noter que dès que les processus exécutés par -e seront terminés, ils se termineront. Dans ce cas, bash est chargé, exécute toutes les commandes que vous lui passez et existe immédiatement. J'ai mis les instructions de lecture pour attendre la saisie de l'utilisateur. De cette façon, ces onglets ne se fermeront pas jusqu'à ce que vous appuyiez sur une touche, juste pour que vous puissiez le voir dans cet exemple. Sans eux, il semblerait que seuls deux onglets s'ouvraient, car les deux autres s'exécuteraient et se fermeraient trop rapidement.
la source
Puisque bash se ferme une fois la commande terminée, vous pouvez appeler une autre instance de
bash
after votre commande pour obtenir un shell interactif:la source
Enregistrez ci-dessous en tant que script.sh
ajoutez script.sh à $ PATH puis exécutez-le
Voir Ouvrir un nouvel onglet dans gnome-terminal à l'aide de la ligne de commande .
la source