Réponses:
En supposant que votre commande est appelée mycommand
, je changerais mon lanceur pour exécuter ceci:
gnome-terminal -e "mycommand|less"
Si vous voulez 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. Modifiez l'option "Quand la commande se termine" en "Maintenez le terminal ouvert".
Lorsque vous exécutez des commandes, il doit maintenant laisser le terminal ouvert lorsque quelque chose s'exécute.
Edit: Si vous ne vous souciez pas vraiment du terminal, vous pouvez simplement utiliser le drapeau d'attente de xterm:
xterm -e "mycommand" hold
Votre lanceur exécute un script non?
À la fin de votre script, ajoutez
read -p "Press any key to exit > " -n1 junk
echo
Ensuite, votre script attendra que vous choisissiez de le terminer.
command || read -n1 -p "Command failed. Press any key to exit..."
Dans votre raccourci .desktop, utilisez ceci
Exec=gnome-terminal -x bash -c "YOUR_SCRIPT; exec $SHELL"
Une fois votre script terminé, le processus Bash se remplacera par une nouvelle invocation de lui-même.
Si vous devez passer des arguments entre guillemets à votre script, vous devez échapper aux guillemets:
Exec=gnome-terminal -x bash -c "YOUR_SCRIPT \"arg with spaces\"; exec $SHELL"
Une approche légèrement différente des autres réponses: exécutez votre commande et si cela échoue, puis créez un shell. De cette façon, vous n'avez pas à garder le terminal ouvert (ce qui ne fait pas de distinction entre le succès ou l'échec de la commande), et vous pourriez 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êtres utilise pour fermer les fenêtres), etc.
#!/bin/sh
[ $# -eq 0 ] && {
echo "$(basename $0): no command" >&2
exit 1
}
"$@" || {
echo "failed: $?"
exec $SHELL
}
Placez ce fichier quelque part, comme ~ / bin, puis utilisez "success-or-shell your original command" dans votre lanceur.
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 pourriez probablement faire de même pour csh / tcsh / zsh, etc.):
#!/bin/bash --init-file
commands to run
... et exécutez-le comme:
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
Utilisez la watch
commande.
Format:, watch -n60 myCommand
ouwatch -n60 "my command string"
-n
nombre spécifié de secondes à attendre entre les appels à myCommand ; ex: la commande ci-dessus appellera myCommand toutes les 60 secondes, pour toujours."my command string"
.Disons que vous voulez un lanceur qui affiche l'utilisation du disque et reste ouvert pour que le lecteur puisse le voir. J'utiliserais simplement cette commande dans le lanceur:,
watch -n60 "df -h"
qui appelle df -h
maintenant toutes les 60 secondes.
J'aime cela par rapport à la réponse acceptée gnome-terminal -e "mycommand|less"
parce que j'utilise Xubuntu, qui utilise un terminal différent par défaut.
--tab-with-profile=PROFILENAME
option gnome-terminal . Vous pouvez avoir de nombreux profils pour différents comportements de cette façon :-)