Odpowiedzi:
Zakładając, że twoje polecenie zostało wywołane mycommand
, zmienię mój program uruchamiający, aby uruchomić to:
gnome-terminal -e "mycommand|less"
Jeśli chcesz bardziej trwałego, być może czystszego rozwiązania, otwórz terminal gnome, przejdź do Edycja, Preferencje profilu i kliknij kartę Tytuł i polecenie. Zmień opcję „Po wyjściu polecenia” na „Przytrzymaj terminal otwarty”.
Podczas wykonywania poleceń powinien on pozostawić terminal otwarty, gdy coś się uruchomi.
Edycja: Jeśli tak naprawdę nie zależy ci na terminalu, możesz po prostu użyć flagi wstrzymania xterm:
xterm -e "mycommand" hold
Twój program uruchamiający uruchamia skrypt, prawda?
Na końcu skryptu dodaj
read -p "Press any key to exit > " -n1 junk
echo
Następnie skrypt będzie czekać, aż zdecydujesz się go zakończyć.
command || read -n1 -p "Command failed. Press any key to exit..."
Użyj tego w skrócie .desktop
Exec=gnome-terminal -x bash -c "YOUR_SCRIPT; exec $SHELL"
Po zakończeniu skryptu proces Bash zastąpi się nowym wywołaniem samego siebie.
Jeśli potrzebujesz przekazać argumenty cytowane do skryptu, musisz uciec od cudzysłowów:
Exec=gnome-terminal -x bash -c "YOUR_SCRIPT \"arg with spaces\"; exec $SHELL"
Nieco inne podejście niż w przypadku innych odpowiedzi: uruchom polecenie, a jeśli to się nie powiedzie, odradzaj powłokę. W ten sposób nie musisz trzymać terminala otwartego (co nie rozróżnia między sukcesem a niepowodzeniem komendy) i możesz uznać tę powłokę za szczególnie przydatną w razie awarii. Aby go zamknąć, po prostu użyj Ctrl-D (EOF), „exit”, Alt-F4 (lub cokolwiek innego, czego używa twój menedżer okien do zamykania okien) itp.
#!/bin/sh
[ $# -eq 0 ] && {
echo "$(basename $0): no command" >&2
exit 1
}
"$@" || {
echo "failed: $?"
exec $SHELL
}
Umieść ten plik gdzieś, na przykład ~ / bin, a następnie użyj „sukces-lub-shell swoje oryginalne polecenie” w programie uruchamiającym.
Ta odpowiedź daje najlepszą odpowiedź, jaką do tej pory widziałem, na robienie tego, co chcesz. Zalecają wykonanie skryptu z poleceniami do wykonania i użycie go z parametrem --init-file (specyficznym dla bash, ale prawdopodobnie możesz zrobić to samo dla csh / tcsh / zsh itp.):
#!/bin/bash --init-file
commands to run
... i wykonaj go jako:
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
Użyj watch
polecenia.
Format: watch -n60 myCommand
lubwatch -n60 "my command string"
-n
podano liczbę sekund oczekiwania między wywołaniami MyCommand ; np .: powyższe polecenie wywoła myCommand co 60 sekund, na zawsze."my command string"
.Powiedzmy, że potrzebujesz programu uruchamiającego, który wyświetla użycie dysku i pozostaje otwarty dla czytelnika. Po prostu użyłbym tego polecenia w programie uruchamiającym:,
watch -n60 "df -h"
który wywołuje df -h
teraz co 60 sekund.
Podoba mi się to w stosunku do zaakceptowanej odpowiedzi, gnome-terminal -e "mycommand|less"
ponieważ korzystam z Xubuntu, który domyślnie używa innego terminala.
--tab-with-profile=PROFILENAME
. W ten sposób możesz mieć wiele profili dla różnych zachowań :-)