Terminal mit vordefinierten Registerkarten öffnen

422
Ilia Kukharev

Gibt es eine Möglichkeit, das Terminal mit vordefinierten Registerkarten zu öffnen? Ich habe fünf gängige Pfade, die ich normalerweise verwende, und ich möchte, dass das Terminal mit diesen Pfaden in verschiedenen Registerkarten geöffnet wird. Ich denke, das sollte AppleScript sein, aber ich habe nicht genug Erfahrung, um es zu schreiben. Kannst du mir helfen?

Vielen Dank.

1

2 Antworten auf die Frage

1
Ilia Kukharev

nm, das ist die Antwort:

tell application "Terminal" activate do script "cd %path1%" tell application "Terminal" to set custom title of tab 1 of front window to "Name 1" tell application "System Events" to keystroke "t" using command down delay 0.05 do script "cd %path2%" in window 1 tell application "Terminal" to set custom title of tab 1 of front window to "Name 2" end tell 

Dadurch wird Terminal mit Path1 und Tabellenname 1 und eine weitere Registerkarte mit Path2 und Tabellenname 2 geöffnet

0
CJK

Erstens ein paar Punkte zu Ihrem AppleScript, nur zu Lernzwecken:

  • Sie müssen keine tellBefehle in einem tellBlock haben, wenn beide Befehle an dasselbe Objekt senden (z. B. Terminal ). Der tellBlock ist ausreichend; Lassen Sie die darin enthaltenen tellAnweisungen aus, die sich mit Terminal befassen (behalten Sie jedoch diejenige bei, die Systemereignisse behandelt ), und die Befehle werden an das Terminal gesendet .
  • Ich würde keine Systemereignis- Tastatureingaben zum Erstellen neuer Registerkarten verwenden. Zum einen können sich die Verknüpfungen ändern, oder die App kann aus irgendeinem Grund den Fokus verlieren und das Tastenanschlagereignis verpassen. Wenn Sie Ihr Ziel nicht do scriptauf Fenster 1 ausrichten und es stattdessen unangetastet lassen, erstellt das Terminal von alleine ein neues Register. Dadurch entfallen einige Codezeilen.

Wenn Sie also nur an verschiedenen Stellen mehrere Registerkarten erstellen müssen, wäre dies so einfach wie:

 -- Launch terminal without creating any windows launch  -- Create a bunch of tabs at desired path locations -- then clear the window to neaten its appearance do script "cd ~; clear" do script "cd /; clear" do script "cd /Applications; clear" 

(Sie können all dies in einem tellBlock mit Targeting- Terminal einschließen ; ich habe den Skript-Editor einfach so eingestellt, dass er dies in der Navigationsleiste für mich erledigt).

Um die Titel der einzelnen Registerkarten festzulegen, nachdem alle Registerkarten gleichzeitig erstellt wurden, muss darauf geachtet werden, dass wir das richtige Fensterobjekt für jede Registerkarte festlegen. Diese zusätzlichen Codezeilen führen direkt nach den obigen Zeilen und benennen die Registerkarten "Tab 1", "Tab 2" usw. in der Reihenfolge, in der sie entstanden sind:

 -- Get window ("tab") id's and sort numerically -- with the help of bash functionality set IDs to id of every window set AppleScript's text item delimiters to " " do shell script ({¬ "echo", ¬ IDs, ¬ "| tr ' ' '\n'", ¬ "| sort -n", ¬ "| tr '\n' ' '"} as string) set IDs to the words of result  -- Give each tab a new custom title repeat with n from 1 to number of windows set custom title of tab 1 of ¬ window id (item n in IDs) to ¬ {"Tab", n} as string end repeat 

Fenstergruppen

Zweitens - und vor allem, da dies Ihre ursprüngliche Frage tatsächlich direkt beantwortet - ist AppleScript überhaupt nicht erforderlich, um das zu erreichen, was Sie möchten. Das Terminal verfügt über eine integrierte Methode, um eine Gruppe von Fenstern (Registerkarten) zu speichern und jedes Mal bei jedem Start von Terminal neu zu starten . Hier ist wie:

  1. Erstellen Sie die gewünschten Registerkarten. cdjede Registerkarte in den gewünschten Ort (oder führen Sie einen beliebigen Befehl in den gewünschten Registerkarten aus).
  2. Vom Fenster Wählen Sie im Menü Speicher Windows als Gruppe ... . Geben Sie im angezeigten Dialogfeld den Namen für diese Gruppe ein und legen Sie fest, ob diese Fenster bei jedem Start von Terminal geöffnet werden sollen .
  3. Jetzt werden sie es tun. Sie können mehrere Gruppen von Fenstern, speichern und sie aus dem Zugriff auf Fenster - Menü, indem Sie Open Window - Gruppe .
  4. Um diese gespeicherten Gruppen zu verwalten, gehen Sie zu Voreinstellungen> Fenstergruppen . Dort können Sie Gruppen löschen, die Sie nicht mehr benötigen.

Der Nachteil ist, dass die Registerkartentitel nicht automatisch festgelegt werden. Sie können jedoch festlegen, welche Informationen die Registerkartentitel generell unter Voreinstellungen> Profile> Fenster / Registerkarte enthalten .