W przypadku programu uruchamiającego dla aplikacji terminalowej, jak mogę utrzymać terminal otwarty po zakończeniu programu?
24
Mam polecenie terminalu uruchamiane z programu uruchamiającego aplikacje. Działa to świetnie, jednak czasami polecenie kończy się niepowodzeniem, więc chciałbym, aby terminal pozostawał otwarty, aby mógł zobaczyć wyniki. W jaki sposób mogę to zrobić?
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:
Aby zachować domyślną akcję terminala „po wyjściu komendy”, sugeruję utworzenie nowego profilu terminala, pozostawienie otwartego po wyjściu komendy i przekazanie opcji gnome-terminal --tab-with-profile=PROFILENAME. W ten sposób możesz mieć wiele profili dla różnych zachowań :-)
odwróć
1
xterm -hold -e mycommand
8
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ć.
+1 i aby wyświetlić monit tylko w przypadku niepowodzenia polecenia (zwraca niezerowy kod wyjścia), można to zrobićcommand || read -n1 -p "Command failed. Press any key to exit..."
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.
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
Format: watch -n60 myCommandlubwatch -n60 "my command string"
-npodano liczbę sekund oczekiwania między wywołaniami MyCommand ; np .: powyższe polecenie wywoła myCommand co 60 sekund, na zawsze.
Jeżeli polecenie jest wiele słów, umieścić go wewnątrz cudzysłowów: "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 -hteraz 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ń :-)xterm -hold -e mycommand
Twój program uruchamiający uruchamia skrypt, prawda?
Na końcu skryptu dodaj
Następnie skrypt będzie czekać, aż zdecydujesz się go zakończyć.
źródło
command || read -n1 -p "Command failed. Press any key to exit..."
Użyj tego w skrócie .desktop
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:
źródło
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.
powodzenie lub sukces
Umieść ten plik gdzieś, na przykład ~ / bin, a następnie użyj „sukces-lub-shell swoje oryginalne polecenie” w programie uruchamiającym.
źródło
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.):
... i wykonaj go jako:
źródło
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łujedf -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.źródło
Spróbuj kliknąć program uruchamiający prawym przyciskiem myszy i wprowadzić właściwości.
Powinna istnieć opcja utrzymania otwartego okna terminala
W pliku .desktop powinien znajdować się wpis
X-KeepTerminal=true
źródło