Wenn ich mit Terminal fertig bin, möchte ich es beenden. Im Moment habe ich drei Möglichkeiten:
killall Terminal. Es wird den Prozess beenden, aber eher abrupt. Ich denke nicht, dass dies die beste Idee ist.
Call exit Ich habe die Einstellungen geändert, damit das Terminal geschlossen wird. Die App wird jedoch weiterhin im Dock geöffnet angezeigt und tut nicht das, was ich möchte.
Rechtsklick> Beenden. Dies ist jedoch kein Terminalbefehl zum Beenden.
Also, wie soll ich jetzt das Terminal beenden und schließen? Ich habe etwas über osascript gehört, aber ich bin mir nicht sicher. Ich möchte beenden und schließen, damit das Terminal nicht mehr geöffnet ist, sowohl als Fenster als auch als Prozess.
in Terminal.app
Voreinstellungen> Profile> (Wählen Sie ein Profil aus)> Shell.
auf 'Wenn die Shell beendet wird' wählte 'Fenster schließen'
Wie wäre es mit dem guten alten Command-Q?
Ich habe ctrl + d
verwendet. Es wirft Sie in das Ziel, wo Sie den Befehl sqlite3 gestartet haben.
Eigentlich solltest du eine Konfiguration auf deinem Terminal vornehmen, wenn dein Terminal aufgedrückt ist ⌘+, dann siehst du unten bildschirm:
Drücken Sie dann die Shell-Taste und Sie sehen den folgenden Bildschirm:
Wählen Sie nun Close if the Shell exited cleanly
für Wenn die Shell beendet wird .
Durch die obige Konfiguration wird das Terminal jedes Mal mit dem Befehl exit
geschlossen, aber nicht beendet.
In einem Terminalfenster können Sie Folgendes eingeben:
kill -9 $(ps -p $PPID -o ppid=)
Dadurch wird der Terminalanwendungsprozess, der dem übergeordneten Element des aktuellen Prozesses übergeordnet ist, abgebrochen.
Um ein Terminalfenster innerhalb eines laufenden Skripts zu schließen, müssen Sie in der Prozesshierarchie eine weitere Ebene wie folgt aufrufen:
kill -9 $(ps -p $(ps -p $PPID -o ppid=) -o ppid=)
Sie können AppleScript über den Befehl osascript
verwenden:
osascript -e 'tell application "Terminal" to quit'
osascript -e "tell application \"System Events\" to keystroke \"w\" using command down"
Dies simuliert eine CMD + w Tastendruck.
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"
Das gibt keine Fehler und lässt das Terminal sauber anhalten.
Sie können auch diesen gefalteten Befehl verwenden, der keine Warnung zum Beenden seines 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 in Ihrem Bash-Profil einen Alias definieren können (z. B. quit
):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 mit anderen Einstellungen arbeiten zu müssen.
Verwenden Sie den Befehl osascript
in Ihrem Code, wie in icktoofay erwähnt: osascript -e 'tell application "Terminal" to quit'
Öffnen Sie anschließend die Voreinstellungen für das Terminal, gehen Sie zu Einstellungen> Shell und setzen Sie "Aufforderung vor dem Schließen:" auf "Nie". Das Terminal sollte jetzt vollständig beendet werden (nicht in Ihrem Dock geöffnet bleiben) und die Aufforderung vor dem Beenden ignorieren. Wenn Sie nur ein Terminalfenster geöffnet haben und der Befehl osascript
Ihre letzte Codezeile ist, sollte er warten, bis der Befehl ausgeführt wurde, den Sie ausgeführt haben.
Dies ist nicht ideal, wenn Sie Skripts in demselben Fenster oder in anderen Fenstern im Hintergrund ausführen (z. B. können Sie einen Befehl im Hintergrund ausführen und das aktuelle Fenster 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 von Ihnen angegebenen Markierungsdateinamen aufrufen - sofern er sich im Suchpfad von Terminal befindet (führen Sie echo $PATH
aus, um zu sehen, wo Terminal nach Skripts sucht).
Ich habe benutzt
beenden Sie -n Terminal
am Ende meiner Skripte. Sie müssen das Terminal so einstellen, dass es niemals in den Einstellungen auffordert
Also Terminal> Voreinstellungen> Einstellungen> Shell Wenn die Shell beendet wird Schließen Sie das Fenster Vor dem Schließen fragen Nie
cat ~/exit.scpt
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
genau wie vi ~/.bashrc
oder zshrc
(noch etwas?)
fügen Sie es hinzu: alias exit="osascript ~/exit.scpt"