GNU/Linux >> Tutoriels Linux >  >> Linux

Exécuter un script shell dans un nouveau terminal à partir du terminal actuel

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 :)


Linux
  1. Comment exécutez-vous un script lors de la connexion dans * nix ?

  2. Comment exécuter un script shell sur une console Unix ou un terminal Mac ?

  3. Exécuter un script shell en parallèle

  4. valeur de retour du script python au script shell

  5. Exécutez un script de n'importe où

Comment exécuter une commande / un script Linux Shell en arrière-plan

Comment exécuter un script Shell en tant que service SystemD sous Linux

D'où est exécuté un script Shell ?

Régénérer .bashrc à partir du shell actuel ?

Comment exécuter des scripts Python à partir du shell

Comment créer et exécuter un script shell dans Ubuntu 22.04