Wenn ich mit dem Terminal fertig bin, möchte ich es beenden. Im Moment habe ich drei Möglichkeiten:
Killall Terminal. Es wird den Prozess beenden, aber ziemlich abrupt. Ich denke nicht, dass dies die beste Idee ist.
Anruf beenden. Ich habe die Einstellungen geändert, sodass Exit das Terminal schließt. Die App wird jedoch weiterhin im Dock geöffnet und macht nicht das, was ich möchte.
Rechtsklick> Beenden. Dies ist jedoch kein Terminalbefehl zum Beenden.
Wie soll ich nun das Terminal verlassen und schließen? Ich habe etwas über Osascript gehört, bin mir aber nicht sicher. Ich möchte beenden und schließen, damit das Terminal nicht mehr geöffnet ist, sowohl als Fenster als auch als Prozess.
kill
wirdkillall
gesendetSIGTERM
, was abgefangen werden kann. Einige Programme fangen es auf, räumen nach sich selbst auf und beenden es ordnungsgemäß. Keine Ahnung, obTerminal.app
unter ihnen ist. Ich vermute jedoch, dass dies zur Not bei Ask Different oder Super User besser wäre, da es keinen Programminhalt zu haben scheint.Antworten:
in Terminal.app
Einstellungen> Profile> (Profil auswählen)> Shell.
on 'Wenn die Shell beendet wird' gewählt 'Fenster schließen'
quelle
Wie wäre es mit dem guten alten Command-Q?
quelle
Klicken Sie in der Terminal-App auf die Registerkarte Einstellungen >> Profile .
Wählen Sie rechts die Registerkarte Shell .
Sie können Nie fragen, bevor Sie schließen, um die Warnung zu unterdrücken.
quelle
When shell exits:
"Fenster schließen"Eigentlich sollten Sie eine Konfiguration auf Ihrem Terminal festlegen. Wenn Ihr Terminal aktiv ist, drücken Sie ⌘+, ,dann sehen Sie den folgenden Bildschirm:
Drücken Sie dann die Shell-Registerkarte und Sie sehen den folgenden Bildschirm:
Wählen Sie nun
Close if the shell exited cleanly
für Wann die Shell beendet wird .Durch die obige Konfiguration wird
exit
das Terminal jedes Mal mit Befehl geschlossen, aber nicht beendet.quelle
Sie können AppleScript über den folgenden
osascript
Befehl verwenden:quelle
.bashrc
(oder einen gleichwertigen, wenn Sie eine andere Shell verwenden) ein. Ich denke immer noch an eine Antwort auf 2.exit
nach dem Starten des dämonisierten Prozesses. Nachdem der dämonisierte Prozess eine Sekunde gewartet hat, kann erosascript
wie beschrieben aufgerufen werden.osascript
:tell application "System Events" to keystroke "a" using command down
. Dies wird wahrscheinlich auch das Problem haben.In einem Terminalfenster können Sie Folgendes eingeben:
Dadurch wird der Terminalanwendungsprozess beendet, der das übergeordnete Element des übergeordneten Prozesses des aktuellen Prozesses ist, wie der Befehl kill zeigt.
Um ein Terminalfenster in einem laufenden Skript zu schließen, müssen Sie eine weitere Ebene in der Prozesshierarchie wie folgt aufsteigen:
quelle
kill -9
Sie es nur, wenn Sie wissen, dass andere Signale nicht funktionieren.Ich habe benutzt
ctrl + d
. Es bringt Sie an das Ziel, an dem Sie den Befehl sqlite3 überhaupt gestartet haben.quelle
osascript -e "tell application \"System Events\" to keystroke \"w\" using command down"
Dies simuliert einen CMD+ wTastendruck.
Wenn Sie möchten, dass Terminal vollständig beendet wird, können Sie Folgendes verwenden:
osascript -e "tell application \"System Events\" to keystroke \"q\" using command down"
Dies gibt keine Fehler und lässt das Terminal sauber anhalten.
quelle
Sie können auch diesen verschlungenen Befehl verwenden, der keine Warnung zum Beenden des eigenen Prozesses auslöst:
osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit
Dieser Befehl ist ziemlich lang, sodass Sie einen Alias (z. B.
quit
) in Ihrem Bash-Profil definieren können:alias quit='osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit'
Auf diese Weise können Sie einfach
quit
in das Terminal eingeben, ohne an anderen Einstellungen herumspielen zu müssen.quelle
Verwenden Sie den
osascript
Befehl in Ihrem Code wie folgt:osascript -e 'tell application "Terminal" to quit'
Öffnen Sie dann die Terminaleinstellungen, gehen Sie zu Einstellungen> Shell und setzen Sie "Vor dem Schließen auffordern:" auf "Nie". Das Terminal sollte jetzt vollständig beendet werden (nicht in Ihrem Dock geöffnet bleiben) und die Eingabeaufforderung vor dem Beenden ignorieren. Wenn nur ein Terminalfenster geöffnet ist und der
osascript
Befehl Ihre letzte Codezeile ist, sollte er warten, bis der zuvor ausgeführte Befehl abgeschlossen ist.Dies ist nicht ideal, wenn Sie Skripte im selben Fenster oder in anderen Fenstern im Hintergrund ausführen (z. B. können Sie einen Befehl im Hintergrund ausführen und das aktuelle Fenster weiterhin für andere Befehle verwenden, wenn auf den ersten Befehl ein kaufmännisches Und folgt ); Achtung!
Wenn Sie den
osascript
Code in eine Shell-Skriptdatei einschließen, können Sie ihn wahrscheinlich mit dem markigen Dateinamen aufrufen, den Sie ihm geben - solange er sich im Suchpfad des Terminals befindet (führen Sie ihn aus, umecho $PATH
zu sehen, wo Terminal nach Skripten sucht).quelle
Erstellen Sie ein Skript:
cat ~/exit.scpt
so was:
command + w
, um die Registerkarte zu schließen.tell application "Terminal" set WindowNum to get window count if WindowNum = 1 then quit else tell application "System Events" to keystroke "w" using command down end if end tell
Fügen Sie dann einen Alias in Ihren * shrc ein
genau wie
vi ~/.bashrc
oderzshrc
(noch etwas?)füge es hinzu:
alias exit="osascript ~/exit.scpt"
Und geben Sie die ~ / .bashrc-Quelle ein oder öffnen Sie Ihre terminal.app erneut
quelle
Ich habe benutzt
Beenden Sie -n Terminal
am Ende meiner Skripte. Sie müssen das Terminal so eingestellt haben, dass keine Einstellungen vorgenommen werden
Also Terminal> Einstellungen> Einstellungen> Shell Wenn die Shell beendet wird Schließen Sie das Fenster Eingabeaufforderung, bevor Sie Nie schließen
quelle
Ich habe hier verschiedene Variationen der Antworten ausprobiert. Egal was ich versuche, ich kann immer einen Anwendungsfall finden, in dem der Benutzer aufgefordert wird, Terminal zu schließen.
(Da mein Skript ist ein einfaches
drutil -drive 2 tray open
- ein bestimmtes DVD - Laufwerk zu öffnen), muss der Benutzer nicht die Terminal - Fenster , während des Skript ausgeführt werden sehen müssen.Meine Lösung bestand darin, das Skript in eine App umzuwandeln, die das Skript ausführt, ohne ein Terminalfenster anzuzeigen. Der zusätzliche Vorteil besteht darin, dass bereits geöffnete Terminalfenster geöffnet bleiben. Wenn keines geöffnet ist, bleibt das Terminal nach dem Ende des Skripts nicht mehr resident. Es scheint überhaupt kein Terminal zu starten, um das Bash-Skript auszuführen.
Ich habe diese Anweisungen befolgt, um mein Skript in eine App umzuwandeln : https://superuser.com/a/1354541/162011
quelle
Wenn es sich um einen Mac handelt, geben Sie 'exit' ein und drücken Sie die Eingabetaste.
quelle