Jai un script qui sexécute en arrière-plan (sans fenêtres de terminal ni TTY) et fait parfois quelque chose.

Je veux maintenant quil fasse autre chose quand il fait quelque chose et cest douvrir une fenêtre de terminal Gnome et dexécuter 2 commandes. En fait, je nai besoin dexécuter quune seule commande mais je veux que la fenêtre du terminal reste ouverte pour que je puisse voir la sortie de la commande. La commande imprime à la fois sur stdout et stderr et sa sortie change au fil du temps, donc simplement lécrire dans un fichier et envoyer une sorte de notification ne ferait pas très bien le travail.

Je peux faire en sorte que Gnome Terminal ouvrez une fenêtre et exécutez 1 commande:

gnome-terminal -e "sleep 10" 

Jai choisi sleep comme commande de longue durée pour plus de simplicité. Cependant, lors de lajout dune autre commande, aucune fenêtre de terminal ne souvre:

gnome-terminal -e "echo test; sleep 10" 

Quelle est la solution à cela?

Commentaires

Answer

gnome-terminal traite tout entre guillemets comme une seule commande, donc pour exécuter plusieurs dentre eux consécutivement, vous devez lancez linterpréteur (généralement un shell), et faites des choses à lintérieur, par exemple:

gnome-terminal -e "sh -c "echo test; sleep 10"" 

BTW, vous voudrez peut-être que la fenêtre reste ouverte même après que les commandes aient terminé leur travail, dans ce cas, commencez simplement un nouveau shell, ou remplacez un courant par le nouveau:

gnome-terminal -e "sh -c "echo test; sleep 10; exec bash"" 

Commentaires

  • # Loption «-e» est obsolète et pourrait être supprimée dans une version ultérieure de gnome-terminal. # # Utilisez «-» pour terminer les options et mettez la ligne de commande à exécuter après. # Cette erreur se produit maintenant. Mais si vous remplacez -e par -, le nouveau terminal qui apparaît donne une erreur. Comment utiliser correctement -?
  • @ eric.frederich basé sur cette réponse à une question à stackoverflow, je pense que la syntaxe devrait être gnome-terminal -- /bin/sh -c 'echo test; sleep 10'

Réponse

Depuis janvier 2020, le -e dans gnome-terminal fonctionne toujours, mais lance lavertissement

# Loption « -e » est obsolète et pourrait être supprimée dans une version ultérieure de gnome-terminal.

# Utilisez « – » pour terminer les options et mettre la ligne de commande à exécuter après.

Vous pouvez exécuter les deux commandes sans avertissement avec

 gnome-terminal -- /bin/sh -c "echo test; sleep 10"  

Et, comme mentionné dans cette réponse , si vous voulez que la fenêtre reste ouverte par la suite, vous pouvez faire

 gnome-terminal -- /bin/sh -c "echo test; sleep 10; exec bash"  

* réponse t o une question similaire

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *