Je suis venu ici pour comprendre comment faire en sorte qu'un script génère un terminal et l'exécute lui-même, donc pour ceux qui veulent le faire, j'ai trouvé cette solution :
if [ ! -t 0 ]; then # script is executed outside the terminal?
# execute the script inside a terminal window with same arguments
x-terminal-emulator -e "$0" "[email protected]"
# and abort running the rest of it
exit 0
fi
Voici un exemple simple pour vous aider à démarrer :
Pour écrire un script shell, faites ceci sur votre invite de commande :
echo -e '#!/bin/sh\n echo "hello world"' > abc.sh
Cela écrit :
#!/bin/sh
echo "hello world"
Vers un fichier nommé abc.sh
Ensuite, vous voulez le rendre exécutable en :
chmod +x abc.sh
Maintenant, vous pouvez l'exécuter en :
./abc.sh
Et vous devriez voir :
hello world
Sur votre terminal.
Pour l'exécuter dans un nouveau terminal, vous pouvez faire :
gnome-terminal -x ./abc.sh
ou, si c'est xterm
:
xterm -e ./abc.sh
Voici une liste des différents émulateurs de terminaux.
Alternativement, vous l'exécutez simplement dans votre terminal actuel, mais en arrière-plan à la place en :
./abc.sh &
Pour gnome, essayez ceci.
Remplacez ls par la commande que vous souhaitez exécuter
gnome-terminal -x sh -c "ls|less"
J'espère que c'est ce que vous voulez
Depuis janvier 2020, le -e
et -x
option en gnome-terminal
fonctionne toujours correctement mais lance les avertissements suivants :
Pour -e
:
# L'option "-e" est obsolète et pourrait être supprimée dans une version ultérieure de gnome-terminal.
# Utilisez "--" pour terminer les options et placez la ligne de commande à exécuter après.
Pour -x
:
# L'option "-x" est obsolète et pourrait être supprimée dans une version ultérieure de gnome-terminal.
# Utilisez "--" pour terminer les options et placez la ligne de commande à exécuter après.
Sur la base des informations ci-dessus, j'ai confirmé que vous pouvez exécuter les deux commandes suivantes sans recevoir de message d'avertissement :
gnome-terminal -- /bin/sh -c '<your command>'
gnome-terminal -- ./<your script>.sh
J'espère que cela aidera quelqu'un d'autre ayant actuellement ce problème :)