Comment puis-je créer un script qui ouvre les fenêtres du terminal et exécute des commandes dans celles-ci?

108

J'ai trois scripts à exécuter lorsque je lance ma machine Ubuntu, ils lancent les services que j'utilise dans mon environnement de développement.

Pour ce faire, j'ouvre manuellement trois terminaux et saisis les commandes.

Est-il possible de créer un script qui ouvrira trois terminaux et exécutera une commande dans chacun d’eux? (Chaque commande doit être dans une fenêtre de terminal distincte pour que je puisse voir leur sortie).

    
posée JSBach 02.06.2011 - 21:58
la source

5 réponses

110
gnome-terminal -e command

ou

xterm -e command

ou

konsole -e command

Assez

terminal -e command

Pour que le terminal reste quand la commande est terminée:

Dans konsole, il y a un drapeau --noclose .

Dans xterm, il existe un indicateur -hold .

Dans gnome-terminal , accédez à Modifier - & gt; Préférences de profil - & gt; Titre . Cliquez sur l'onglet Commande . Sélectionnez Conserver le terminal dans le menu déroulant intitulé Lorsque la commande est fermée . Vous devez créer un nouveau profil pour cela et exécuter avec

gnome-terminal --window-with-profile=NAMEOFTHEPROFILE -e command
    
réponse donnée nickguletskii 02.06.2011 - 22:03
la source
47

Au lieu de coder en dur gnome-terminal , konsole , et cetera, utilisez le système Alternatives. Le programme qui exécute l'émulateur de terminal par défaut est:

x-terminal-emulator

Sur mon système, il ouvre une nouvelle instance de Konsole chaque fois que j'exécute cette commande.

Heureusement, les terminaux semblent prendre en charge l’option -e pour exécuter une commande (je l’ai vérifiée pour konsole et gnome-terminal ). Les arguments après la commande sont transmis à la commande appelée. Bash refuse de rester ouvert dans mon terminal, un script supplémentaire est nécessaire pour obtenir un terminal:

#!/bin/sh
"$@"
exec "$SHELL"

Si vous avez enregistré le script précédent sous la forme /home/user/hacky et l'avez rendu exécutable, vous devez exécuter vos scripts avec:

x-terminal-emulator -e /home/user/hacky your-script optional arguments here

Le chemin complet est requis et /home/user/hacky doit être exécutable.

Ma dernière tentative pour exécuter un script dans une nouvelle fenêtre de terminal se trouve dans la révision n ° 2 , c'était avant. J'ai réalisé que les arguments pouvaient être transmis à x-terminal-emulator .

    
réponse donnée Lekensteyn 02.06.2011 - 22:29
la source
7

Tout simplement -

#!/bin/bash

/etc/init.d/ccpd status

Cela suffit pour les autres commandes qui n’ont pas besoin d’afficher quoi que ce soit dans le terminal. Mais ici, il faut voir le statut affiché.
Il faut donc exécuter dans une fenêtre de terminal

#!/bin/bash

gnome-terminal -e "/etc/init.d/ccpd status"  --window-with-profile=NAMEOFTHEPROFILE

L’autre article prévoyait que [] soit un espace réservé

Ici, "NAMEOFTHEPROFILE" doit être remplacé par le nom du profil "contenant le terminal à la sortie de la commande".

    
réponse donnée Karthik T 23.01.2013 - 10:31
la source
0

commenter la réponse de Lekensteyn. Je sais que c'est un ancien message, mais pour ceux qui trouvent cela utile (comme je viens de le faire) Au lieu de faire un autre "script hacky" avec juste une fonction dans le script que vous appelez

hacky_function()
{
"$@"
exec "$SHELL"
}

Appelez votre script avec "x-terminal-emulator -e / path / to / script arguments optionnels hacky_function ici"

N'oubliez pas de mettre "$ @" à la fin du script

    
réponse donnée Sruli 06.12.2017 - 21:11
la source
-2

Utilisez la commande écran et -d se détache d'une session d'écran existante et se reconnecte ici -m forcer une nouvelle session d'écran -S crée une session nommée au lieu d'utiliser le nom par défaut

    
réponse donnée Jack Heath 13.04.2014 - 22:00
la source

Lire d'autres questions sur les étiquettes