Avec un lanceur d'application de terminal, comment puis-je garder le terminal ouvert une fois le programme terminé?

24

Je lance une commande de terminal à partir d'un lanceur d'applications. Cela fonctionne très bien, mais la commande échoue parfois. J'aimerais donc que le terminal reste ouvert pour que je puisse voir les résultats. Comment puis-je faire cela?

    
posée Eugene M 31.08.2010 - 14:19
la source

6 réponses

22

En supposant que votre commande s'appelle mycommand , je changerais de programme de lancement pour exécuter ceci:

gnome-terminal -e "mycommand|less"

Si vous souhaitez une solution plus permanente, peut-être plus propre, ouvrez gnome-terminal, allez dans Edition, Préférences de profil et cliquez sur l'onglet Titre et commande. Changez l'option "When command exits" en "Maintenez le terminal ouvert".

Lorsque vous exécutez des commandes, le terminal doit rester ouvert lorsque quelque chose est exécuté.

Éditer: si vous ne vous souciez pas vraiment du terminal, vous pouvez simplement utiliser l'indicateur de maintien de xterm:

xterm -e "mycommand" hold
    
réponse donnée Oli 31.08.2010 - 14:32
la source
8

Dans votre raccourci .desktop, utilisez cette

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT; exec $SHELL"

Une fois votre script terminé, le processus Bash se remplacera par une nouvelle invocation.

Si vous devez transmettre des arguments entre guillemets à votre script, vous devez échapper les guillemets:

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT \"arg with spaces\"; exec $SHELL"
    
réponse donnée mivk 07.01.2013 - 17:26
la source
7

Votre lanceur exécute un script, n'est-ce pas?

À la fin de votre script, ajoutez

read -p "Press any key to exit > " -n1 junk
echo 

Ensuite, votre script attendra jusqu'à ce que vous choisissiez de le terminer.

    
réponse donnée Richard Holloway 31.08.2010 - 14:44
la source
3

Une approche légèrement différente des autres réponses: exécutez votre commande et si cela échoue, créez un shell. De cette façon, vous n'avez pas besoin de garder le terminal ouvert (ce qui ne fait pas la distinction entre le succès ou l'échec d'une commande) et vous pouvez trouver ce shell particulièrement utile en cas d'échec. Pour le fermer, utilisez simplement Ctrl-D (EOF), "exit", Alt-F4 (ou tout ce que votre gestionnaire de fenêtre utilise pour fermer les fenêtres), etc.

success-or-shell

#!/bin/sh
[ $# -eq 0 ] && {
  echo "$(basename $0): no command" >&2
  exit 1
}
"[email protected]" || {
  echo "failed: $?"
  exec $SHELL
}

Placez ce fichier quelque part, tel que ~ / bin, puis utilisez "success-or-shell votre commande d'origine" dans votre programme de lancement.

    
réponse donnée Roger Pate 01.09.2010 - 22:34
la source
0

Cette réponse donne la meilleure réponse que j'ai vue jusqu'à présent pour faire ce que vous voulez. Ils recommandent de créer un script avec les commandes à exécuter et de l’utiliser avec le paramètre --init-file (spécifique à bash, mais vous pouvez probablement faire de même pour csh / tcsh / zsh, etc.):

#!/bin/bash --init-file
commands to run

... et l'exécuter en tant que:

xterm -e /path/to/script
# or
gnome-terminal -e /path/to/script
# or
the-terminal -e bash --init-file /path/to/script/with/no/shebang
    
réponse donnée Brian Vandenberg 23.01.2015 - 18:14
la source
0

Utilisez la commande watch .

Format: watch -n60 myCommand , ou watch -n60 "my command string"

  • le -n a spécifié le nombre de secondes à attendre entre les appels à maCommande ; ex: la commande ci-dessus appellera myCommand toutes les 60 secondes, pour toujours.
  • Si la commande est composée de plusieurs mots, mettez-la entre guillemets: "my command string" .

Supposons que vous souhaitiez un lanceur qui affiche l’utilisation du disque et reste ouvert au lecteur. J'utiliserais simplement cette commande dans le lanceur:
watch -n60 "df -h" , qui appelle df -h maintenant toutes les 60 secondes.

J'aime cette réponse à la réponse acceptée de gnome-terminal -e "mycommand|less" car j'utilise Xubuntu, qui utilise un terminal différent par défaut.

    
réponse donnée Gabriel Staples 02.09.2017 - 04:11
la source

Lire d'autres questions sur les étiquettes