Antworten:
Unter der Annahme, dass Ihr Befehl aufgerufen wird mycommand
, würde ich meinen Launcher so ändern, dass er Folgendes ausführt:
gnome-terminal -e "mycommand|less"
Wenn Sie eine dauerhaftere, vielleicht sauberere Lösung wünschen, öffnen Sie gnome-terminal, gehen Sie zu Bearbeiten, Profileinstellungen und klicken Sie auf die Registerkarte Titel und Befehl. Ändern Sie die Option "Wenn Befehl beendet wird" in "Terminal offen halten".
Wenn Sie Befehle ausführen, sollte das Terminal jetzt geöffnet bleiben, wenn etwas ausgeführt wird.
Bearbeiten: Wenn dir das Terminal nicht wirklich wichtig ist, kannst du einfach das Hold-Flag von xterm verwenden:
xterm -e "mycommand" hold
Ihr Launcher führt ein Skript aus, oder?
Am Ende Ihres Skripts fügen Sie hinzu
read -p "Press any key to exit > " -n1 junk
echo
Dann wartet Ihr Skript, bis Sie es beenden.
command || read -n1 -p "Command failed. Press any key to exit..."
Verwenden Sie diese Option in Ihrer Desktop-Verknüpfung
Exec=gnome-terminal -x bash -c "YOUR_SCRIPT; exec $SHELL"
Nachdem Ihr Skript fertig ist, wird der Bash-Prozess durch einen neuen Aufruf von sich selbst ersetzt.
Wenn Sie Ihrem Skript Argumente in Anführungszeichen übergeben müssen, müssen Sie die Anführungszeichen umgehen:
Exec=gnome-terminal -x bash -c "YOUR_SCRIPT \"arg with spaces\"; exec $SHELL"
Ein etwas anderer Ansatz als die anderen Antworten: Führen Sie Ihren Befehl aus, und wenn dies fehlschlägt, erzeugen Sie eine Shell. Auf diese Weise müssen Sie das Terminal nicht offen halten (was nicht zwischen Erfolg oder Misserfolg von Befehlen unterscheidet), und Sie finden diese Shell möglicherweise besonders nützlich bei Misserfolgen. Verwenden Sie zum Schließen einfach Strg + D (EOF), "Beenden", Alt + F4 (oder was auch immer Ihr Fenstermanager zum Schließen von Fenstern verwendet) usw.
#!/bin/sh
[ $# -eq 0 ] && {
echo "$(basename $0): no command" >&2
exit 1
}
"$@" || {
echo "failed: $?"
exec $SHELL
}
Platzieren Sie diese Datei an einem Ort, z. B. ~ / bin, und verwenden Sie in Ihrem Launcher "Erfolg oder Shell Ihres ursprünglichen Befehls".
Diese Antwort gibt die beste Antwort, die ich bisher gesehen habe, um das zu tun, was Sie wollen. Sie empfehlen, ein Skript mit den auszuführenden Befehlen zu erstellen und es mit dem Parameter --init-file zu verwenden (bash-spezifisch, aber Sie könnten wahrscheinlich dasselbe für csh / tcsh / zsh usw. tun):
#!/bin/bash --init-file
commands to run
... und führe es aus als:
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
Verwenden Sie den watch
Befehl.
Format: watch -n60 myCommand
oderwatch -n60 "my command string"
-n
angegebene Anzahl von Sekunden, die zwischen den Aufrufen von myCommand gewartet werden soll . Beispiel: Der obige Befehl ruft myCommand für immer alle 60 Sekunden auf."my command string"
.Angenommen, Sie möchten einen Launcher, der die Festplattennutzung anzeigt und für den Leser sichtbar bleibt. Ich würde einfach diesen Befehl im Launcher: verwenden
watch -n60 "df -h"
, der df -h
jetzt alle 60 Sekunden aufruft .
Mir gefällt dies über die akzeptierte Antwort von, gnome-terminal -e "mycommand|less"
da ich Xubuntu verwende, das standardmäßig ein anderes Terminal verwendet.
--tab-with-profile=PROFILENAME
Option zu übergeben. Sie können für verschiedene bahaviours viele Profile haben auf diese Weise :-)