Öffnen eines Terminalfensters zu einem bestimmten Verzeichnis aus einem Bash-Skript

Wie kann ich in Mac OS X ein Bash-Skript schreiben, das ein Terminalfenster in einem bestimmten Verzeichnis öffnet? Ich würde sowas annehmen wie:

open /Applications/Utilities/Terminal.app

Aber das tut nichts (vielleicht lädt es die Terminal-Anwendung, die bereits geöffnet ist, anstatt ein neues Terminal-Fenster zu öffnen). Und natürlich wird es nicht in ein Verzeichnis gecd, da ich das nicht angegeben habe ...

Antworten (3)

Hier ist ein kleines Skript, das ich erstellt habe:

#!/usr/bin/osascript
on run argv
  set dir to quoted form of (first item of argv)
  tell app "Terminal" to do script "cd " & dir
end run

Wenn Sie diese speichern und ausführbar machen

chmod +x script_filename

und führen Sie es dann aus

script_filename ~/Desktop

dann öffnet es ein neues Terminalfenster und wechselt in das Verzeichnis im Argument.

Wenn Sie ab Mac OS X Lion 10.7 einen Ordner mit Terminal öffnen, wird an diesem Ort ein neues Terminal erstellt. Beispielsweise können Sie einen Ordner auf das Terminal-Anwendungssymbol oder in eine Registerkartenleiste ziehen, um eine neue Registerkarte zu erstellen, und es gibt Dienste (Neues Terminal in Ordner), die Sie aus dem Kontextmenü verwenden können, um ein neues Fenster oder eine neue Registerkarte für ein zu öffnen ausgewählten Ordner im Finder oder anderen Anwendungen (oder sogar einen im Text ausgewählten Pfadnamen).

Um das Äquivalent über die Befehlszeile (oder ein Shell-Skript) auszuführen:

open -a Terminal /path/to/folder

Dies ist das Befehlszeilenäquivalent zum Ziehen des Ordners auf das Terminal-Anwendungssymbol. (Sie können auch einen vollständigen Pfad für Terminal angeben, wenn Sie eine bestimmte Kopie/Version der Anwendung angeben möchten.)

Funktioniert perfekt!!

Ich bin mir nicht sicher, ob das Folgende von einem Bash-Skript aus funktioniert, aber zumindest habe ich herausgefunden, wie man bestimmte Registerkarten in bestimmten Verzeichnissen öffnet:

In den Einstellungen kopieren Sie unter Einstellungen das Profil, das Sie normalerweise verwenden möchten. Unter Shell können Sie ihm "Befehl ausführen" mitteilen: cd /some/directory. Sie sollten auch "In der Shell ausführen" aktivieren. Optional können Sie unter Fenster einen Titel angeben.

Fügen Sie auf diese Weise weitere Profile hinzu.

Schließen Sie dann alle Terminalfenster, öffnen Sie dann ein Profil in einem neuen Fenster, ein weiteres Profil in einem neuen Tab und ein weiteres Profil in einem neuen Tab. Jetzt haben Sie ein Fenster mit drei Registerkarten. Speichern Sie diese als Fenstergruppe.

Von nun an können Sie diese Fenstergruppe öffnen, wenn Sie Terminal ausführen, und Sie erhalten ein neues Fenster mit diesen Registerkarten in diesen Verzeichnissen.

Offene Frage: Wie sage ich Terminal, dass es eine neue Fenstergruppe aus einem Bash-Skript öffnen soll?

Das funktioniert nur, wenn Sie möchten, dass das neue Fenster mit Ihrer Standard-Shell geöffnet wird. Es funktioniert beispielsweise nicht, wenn Ihre Standard-Shell tcsh ist und Sie ein neues Terminalfenster öffnen möchten, auf dem bash in einem bestimmten Verzeichnis ausgeführt wird.