it-swarm.com.de

OSX - So schließen Sie das Terminalfenster automatisch, nachdem der Befehl "exit" ausgeführt wurde.

Wenn ich mit Terminal fertig bin, möchte ich es beenden. Im Moment habe ich drei Möglichkeiten:

  1. killall Terminal. Es wird den Prozess beenden, aber eher abrupt. Ich denke nicht, dass dies die beste Idee ist.

  2. 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.

  3. 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.

82
darksteel

in Terminal.app

Voreinstellungen> Profile> (Wählen Sie ein Profil aus)> Shell.

auf 'Wenn die Shell beendet wird' wählte 'Fenster schließen'

154
Duke

Wie wäre es mit dem guten alten Command-Q?

29
holygeek

In der Terminal-App die Registerkarte Preference >> Profiles.

Wählen Sie rechts die Registerkarte Shell aus  enter image description here

Sie können Nie Vor Schließen auswählen, um die Warnung zu unterdrücken.

27
Blaise

Ich habe ctrl + d verwendet. Es wirft Sie in das Ziel, wo Sie den Befehl sqlite3 gestartet haben.

9
kalafun

Eigentlich solltest du eine Konfiguration auf deinem Terminal vornehmen, wenn dein Terminal aufgedrückt ist +, dann siehst du unten bildschirm:

enter image description here

Drücken Sie dann die Shell-Taste und Sie sehen den folgenden Bildschirm:

enter image description here

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.

8
AmerllicA

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=) 
8
GOTO 0

Sie können AppleScript über den Befehl osascript verwenden:

osascript -e 'tell application "Terminal" to quit'
7
icktoofay

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.

4
insanikov

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.

3
David P.

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). 

2
John

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

1
Jon

Erstellen Sie ein Skript:

cat ~/exit.scpt

so was:

  • Hinweis: Wenn es nur ein Fenster gibt, beenden Sie einfach die Anwendung, oder simulieren Sie 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 in Ihrem * shrc einen Alias ​​hinzu

genau wie vi ~/.bashrc oder zshrc (noch etwas?)

fügen Sie es hinzu: alias exit="osascript ~/exit.scpt"

Und geben Sie die ~/.bashrc-Quelle ein oder öffnen Sie Ihre terminal.app erneut

0
Sin