macOS-Shell-Befehl zum Erstellen eines neuen Terminal-Fensters
Natürlich können Sie ganz einfach ein neues Terminal-Fenster über das Menü „Shell“ oder mit dem Tastaturkürzel ⌘N (oder ⌘T) erstellen. Aber in manchen Fällen kann es sinnvoller sein, einen Shell-Befehl zu verwenden.
Neue Fenster, die mit dem Tastaturkürzel oder über das Menü erstellt werden, haben immer das Heimatverzeichnis ~
als aktuelles Arbeitsverzeichnis. Was ich möchte, ist ein neues Fenster, das standardmäßig das aktuelle Arbeitsverzeichnis oder ein benutzerdefiniertes Verzeichnis verwendet, das ich mit einem Argument angeben kann:
> new # opens a new terminal window at the current working directory> new ~/Desktop # opens a new terminal window at ~/Desktop
Kein Glück mit AppleScript
Nach meinem letzten Erfolg mit AppleScript dachte ich, dies wäre wieder die beste Lösung. Leider ist dieser spezielle Teil des AppleScript-Wörterbuchs defekt. Die Befehle make new window
oder make new tab
schlagen mit Fehlern fehl, und ich habe mehrere Kombinationen ausprobiert.
Nach einigen Recherchen im Internet sieht es so aus, als ob dieser Teil schon seit langem defekt ist. Ich habe ein Problem im Feedback-Assistenten gemeldet.
Sie können ein neues Terminal-Fenster mit AppleScript erstellen, indem Sie den Befehl do script
im Terminal-Wörterbuch verwenden. (Nicht zu verwechseln mit do shell script
.) Dieses AppleScript macht also in etwa das, was ich will, scheint aber umständlich zu sein.
tell application "Terminal" do script "cd ~/Desktop"end tell
Wenn Sie eine bessere Möglichkeit kennen, ein neues Terminal-Fenster oder noch besser eine Terminal-Registerkarte mit AppleScript zu erstellen, lassen Sie es mich bitte wissen. (Keine UI-Scripting-Lösungen – die haben ihre eigenen Probleme.) Ich habe noch ein paar andere Ideen, bei denen das nützlich sein könnte.
Den Befehl open eingeben
Bei der Websuche habe ich auch Vorschläge gefunden, stattdessen den Befehl open
zu verwenden:
> open -a Terminal ~/Documents
Das öffnet ein neues Terminal-Fenster mit ~/Documents
als Arbeitsverzeichnis. Das kommt dem, was ich wollte, schon sehr nahe.
Ich habe diese Funktion in meiner Shell-Konfigurationsdatei (bash, zsh) erstellt:
# creates a new terminal windowfunction new() { if ]; then open -a "Terminal" "$PWD" else open -a "Terminal" "$@" fi}
Damit kann ich jetzt
> new Projects/desktoppr
eintippen und erhalte ein neues Terminalfenster. Das ist sehr nützlich, wenn man es mit der History-Substitutionsvariable !$
(letztes Argument des vorherigen Befehls) kombiniert:
> mkdir Projects/great_new_tool> new !$
Und ein unerwarteter, aber nützlicher Nebeneffekt ist, dass die new
-Funktion auch eine ssh-Sitzung in einem neuen Fenster öffnen kann:
> new ssh://[email protected]
Hoffentlich finden Sie das auch nützlich!