Terminal hier im Mac OS Finder öffnen [geschlossen]

682

Gibt es etwas Ähnliches wie das Windows Powertoy für Mac OS "Befehlsfenster hier öffnen"? Ich habe über eine Google-Suche ein paar Plugins gefunden, wollte aber herausfinden, was für Entwickler da draußen am besten funktioniert.

Abdullah Jibaly
quelle

Antworten:

900

Ab Mac OS X Lion 10.7 enthält Terminal genau diese Funktionalität als Service. Wie bei den meisten Diensten sind diese standardmäßig deaktiviert. Sie müssen diese Option aktivieren, damit sie im Menü Dienste angezeigt wird.

Systemeinstellungen> Tastatur> Verknüpfungen> Dienste

Aktivieren Sie neuen Terminal am Ordner . Es gibt auch eine neue Terminal-Registerkarte im Ordner , die eine Registerkarte im vordersten Terminalfenster erstellt (falls vorhanden, wird sonst ein neues Fenster erstellt). Diese Dienste funktionieren in allen Anwendungen, nicht nur im Finder, und sie können sowohl Ordner als auch im Text ausgewählte absolute Pfadnamen verarbeiten.

Sie können ihnen sogar Befehlstasten zuweisen.

Dienste werden im Untermenü Dienste jedes Anwendungsmenüs und im Kontextmenü angezeigt (bei gedrückter Ctrl-Taste oder Rechtsklick auf einen Ordner oder Pfadnamen).

Der Dienst " Neues Terminal bei Ordner" wird aktiv, wenn Sie einen Ordner im Finder auswählen . Sie können den Ordner nicht einfach öffnen und den Dienst "an Ort und Stelle" ausführen. Kehren Sie zum übergeordneten Ordner zurück, wählen Sie den entsprechenden Ordner aus und aktivieren Sie den Dienst über das Menü Dienste oder das Kontextmenü.

Darüber hinaus öffnet Lion Terminal ein neues Terminalfenster, wenn Sie einen Ordner (oder Pfadnamen) auf das Terminalanwendungssymbol ziehen. Sie können auch auf die Registerkartenleiste eines vorhandenen Fensters ziehen, um eine neue Registerkarte zu erstellen.

Wenn Sie einen Ordner oder Pfadnamen auf eine Registerkarte (in der Registerkartenleiste) ziehen und der Vordergrundprozess die Shell ist, wird automatisch ein "cd" -Befehl ausgeführt. (Durch Ziehen in die Terminalansicht auf der Registerkarte wird lediglich der Pfadname wie in älteren Terminalversionen selbst eingefügt.)

Sie können dies auch über die Befehlszeile oder ein Shell-Skript tun:

open -a Terminal /path/to/folder

Dies ist das Befehlszeilenäquivalent zum Ziehen eines Ordners / Pfadnamens auf das Terminalanwendungssymbol.

In diesem Zusammenhang verfügt Lion Terminal auch über neue Dienste zum Nachschlagen von Manpages: Beim Öffnen der Manpage im Terminal wird das ausgewählte Manpage-Thema in einem neuen Terminalfenster angezeigt, und bei der Suche nach Manpages im Terminal wird "apropos" für den ausgewählten Text ausgeführt. Ersteres versteht auch Manpage-Referenzen ("open (2)"), Manpage-Befehlszeilenargumente ("2 open") und Manpage-URLs ("x-man-page: // 2 / open").

Chris Page
quelle
8
Funktioniert nicht bei Yosemite.
Olcay Ertaş
2
@ OlcayErtaş Was funktioniert nicht? Alles in meiner Antwort funktioniert auf Yosemite 10.10.x.
Chris Seite
2
Muss ich Finer neu starten? Ich weiß nicht warum, aber ich habe New Terminal at Folder Service aktiviert, aber es hat nicht funktioniert.
Olcay Ertaş
13
@ OlcayErtaş Sie müssen mit der rechten Maustaste auf ein Ordnersymbol klicken, um den Menüpunkt zu erhalten. Navigieren Sie nicht zum Ordner selbst, sondern zu seinem übergeordneten Ordner.
Jonathan Landrum
2
Ich kann es über Rechtsklick / Dienste verwenden, aber ich kann es nicht über Tastaturkürzel verwenden.
Kann Poyrazoğlu
153

Diese:

https://github.com/jbtule/cdto#cd-to

Es ist eine kleine App, die Sie in die Finder-Symbolleiste ziehen. Das Symbol passt sehr gut dazu. Es funktioniert mit Terminal, xterm (unter X11), iterm.

redigiert
quelle
56

Eine Anwendung, die ich als Alternative für unverzichtbar befunden habe, ist DTerm , die tatsächlich ein Mini-Terminal direkt in Ihrer Anwendung öffnet. Außerdem funktioniert es mit fast allem - Finder, XCode, PhotoShop usw.

Paul Alexander
quelle
38

Erläuterung (danke @ vgm64): Wenn Sie sich bereits im Terminal befinden, können Sie schnell zum obersten Finder-Fenster wechseln, ohne das Terminal zu verlassen. Auf diese Weise können Sie die Verwendung der Maus vermeiden.

Ich habe Folgendes zu meinem hinzugefügt, .bash_profiledamit ich jederzeit cdffTerminal eingeben kann.

function ff { osascript -e 'tell application "Finder"'\
 -e "if (${1-1} <= (count Finder windows)) then"\
 -e "get POSIX path of (target of window ${1-1} as alias)"\
 -e 'else' -e 'get POSIX path of (desktop as alias)'\
 -e 'end if' -e 'end tell'; };\

function cdff { cd "`ff $@`"; };

Dies ist aus diesem macosxhints.com Terminal Hinweis .

PCheese
quelle
"open." öffnet ein neues Finder-Fenster im aktuellen Verzeichnis
jolvi
2
@jolvi das ist das Gegenteil von dem, was diese Antwort bietet. Es geht nicht darum, ein Finder-Fenster zu öffnen pwd, sondern cdum das Verzeichnis, in dem der Finder geöffnet ist.
Jonathan Landrum
ah, sorry, natürlich hast du recht.
Jolvi
14

Hier geht es zum Open Terminal . Es ist möglicherweise dem "Befehlsfenster hier öffnen" am ähnlichsten. Ich habe verwendet >cdtound das ist sehr ähnlich, aber das scheint ein bisschen besser im Umgang mit Räumen zu sein ... aber nicht perfekt.

Was sehr schön ist, ist die Möglichkeit, " Key-Down-Ereignisse zu Beginn der Anwendung zu erkennen und damit das Verhalten des Skripts zu ändern ", sodass das Skript beim Aufrufen eine neue Registerkarte im vordersten Terminalfenster öffnen kann durch Halten der Taste ⌘. Ordentlicher Trick.

Beachten Sie auch die Antwort von PCheese. Es ist wahrscheinlich nützlicher für schwere Terminalbenutzer!

Physikmichael
quelle
12

Es gibt eine aktualisierte Version des sehr schönen und schlanken Open Terminal Here, gepostet von vgm64 und d0k . Die Änderung wurde von James David Low vorgenommen . Er veröffentlichte die neue Version auf seiner Website . Laden Sie einfach OpenTerminalHere.zip herunter, extrahieren Sie es, verschieben Sie das Bundle in Ihren Ordner Library / Scripts und ziehen Sie es von dort in Ihre Finder-Symbolleiste.

Das Besondere daran ist, dass immer eine neue Registerkarte geöffnet wird, wenn bereits ein Terminal.app-Fenster geöffnet ist. Sehr hilfreich! Ich bemerkte auch , dass der Stil der Schaltfläche der Anwendung besser den Snow Leopard Finder.app Stil als cdto paßt veröffentlicht von redigiert hat.

pklaus
quelle
Das ist fantastisch! Beachten Sie, dass Sie Befehl + Ziehen (nicht nur wie im obigen Beitrag angegeben) in die Finder-Symbolleiste ziehen müssen. Und dann haben Sie eine Symbolverknüpfung, die beim Klicken aus einem beliebigen Ordner terminiert.
B. Nadolson
10

Sie können auch ein Element mit Befehl-C aus dem Finder kopieren, in das Terminal springen (z. B. mit Spotlight oder QuickSilver), den Typ 'cd' eingeben und einfach mit Befehl-v einfügen

Henrik Hartz
quelle
4

Ich habe ein Bundle mit 3 Apps für die Finder-Symbolleiste erstellt. Die anderen beiden Apps tun:

  • Öffnen Sie Textmate mit der aktuellen Auswahl
  • Öffne GitX mit dem aktuellen Ordner

Weitere Informationen finden Sie hier: http://nslog.de/posts/71

stigi
quelle
3

Wenn Sie Big Cat-Skripte ( http://www.ranchero.com/bigcat/ ) installieren , können Sie Ihre eigenen Kontextmenüelemente (Rechtsklick) hinzufügen. Ich glaube nicht, dass es mit einem Open Terminal Here-Applescript geliefert wird, aber ich verwende dieses Skript (an das ich mich nicht ehrlich erinnere, wenn ich selbst geschrieben oder aus dem Beispiel eines anderen herausgenommen habe):


on main(filelist)
    tell application "Finder"
        try
            activate
            set frontWin to folder of front window as string
            set frontWinPath to (get POSIX path of frontWin)
            tell application "Terminal"
                activate
                do script with command "cd \"" & frontWinPath & "\""
            end tell
        on error error_message
            beep
            display dialog error_message buttons ¬
                {"OK"} default button 1
        end try
    end tell
end main

Ähnliche Skripte können Ihnen auch den vollständigen Pfad zu einer Datei per Rechtsklick anzeigen, was meiner Meinung nach sogar noch nützlicher ist.

iayork
quelle
3

Es ist ein bisschen mehr als Sie verlangen, aber ich empfehle Cocoatech's Path Finder jedem, der wünscht, der Finder hätte etwas mehr Saft. Es enthält eine Symbolleistenschaltfläche zum Öffnen eines Terminalfensters für das aktuelle Verzeichnis oder einen ausziehbaren Bereich mit einer Terminalbefehlszeile am unteren Rand jedes Finder-Fensters. Plus viele andere Funktionen, ohne die ich jetzt nicht leben kann. Sehr ausgereifte, stabile Software. http://cocoatech.com/


quelle
2

Ok, mir ist klar, dass dies etwas spät ist ... Vielleicht war diese Alternative zum Zeitpunkt des Schreibens des Beitrags nicht verfügbar?

Wie auch immer, ich habe festgestellt, dass die Installation des pos-Pakets über Fink (eine Voraussetzung in diesem Fall, vielleicht gibt es etwas Ähnliches für diejenigen, die MacPorts verwenden?) Die einfachste Lösung ist. Sie erhalten zwei Befehle:

  1. posd - gibt das aktuelle Verzeichnis des vordersten Finder-Fensters an (für das Sie vermutlich einen Alias ​​cdf = cd posd erstellen).
  2. fdc - schaltet das aktuelle Verzeichnis des vordersten Finder-Fensters auf das Terminal pwd um. Dies unterscheidet sich geringfügig von "offen". Das öffnet immer ein neues Finder-Fenster.

Ja, Sie müssen zum Terminalfenster wechseln, bevor Sie eine PDF-Datei schreiben, aber ich nehme an, dass dies im Vergleich zum Klicken auf eine Schaltfläche in der Finder-Symbolleiste recht günstig ist. Und es funktioniert auch mit iTerm. Sie müssen keine separate Finder-Symbolleistenschaltfläche herunterladen, die ein iTerm-Fenster öffnet. Dies ist der gleiche Ansatz wie von PCheese vorgeschlagen, aber Sie müssen Ihr .bash_profile nicht überladen.

Jonatan Lindén
quelle
2

Wenn Sie wie ich die Finder-Symbolleiste deaktivieren, fügt dieser Dienst dem Kontextmenü jedes Ordners ein Element hinzu: http://blog.leenarts.net/2009/09/03/open-service-here/

Auf diese Weise können Sie auch jeden Ordner öffnen, den Sie in der Finder-Baumansicht sehen.

Joachim
quelle
1

Ich benutze meistens diese Funktion:

cf() {
  cd "$(osascript -e 'tell app "Finder" to POSIX path of (insertion location as alias)')"
}

Sie können einem Skript wie den folgenden auch eine Verknüpfung zuweisen.

Verwenden Sie eine vorhandene Registerkarte erneut oder erstellen Sie ein neues Fenster (Terminal):

tell application "Finder" to set p to POSIX path of (insertion location as alias)
tell application "Terminal"
    if (exists window 1) and not busy of window 1 then
        do script "cd " & quoted form of p in window 1
    else
        do script "cd " & quoted form of p
    end if
    activate
end tell

Verwenden Sie eine vorhandene Registerkarte erneut oder erstellen Sie eine neue Registerkarte (Terminal):

tell application "Finder" to set p to POSIX path of (insertion location as alias)
tell application "Terminal"
    if not (exists window 1) then reopen
    activate
    if busy of window 1 then
        tell application "System Events" to keystroke "t" using command down
    end if
    do script "cd " & quoted form of p in window 1
end tell

Erstellen Sie immer einen neuen Tab (iTerm 2):

tell application "Finder" to set p to POSIX path of (insertion location as alias)
tell application "iTerm"
    if exists current terminal then
        current terminal
    else
        make new terminal
    end if
    tell (launch session "Default") of result to write text "cd " & quoted form of p
    activate
end tell

Die ersten beiden Skripte haben zwei Vorteile gegenüber den in 10.7 hinzugefügten Diensten:

  • Sie verwenden den Ordner in der Titelleiste, anstatt dass Sie zuerst einen Ordner auswählen müssen.
  • Sie verwenden die vorderste Registerkarte wieder, wenn sie nicht ausgelastet ist, z. B. wenn ein Befehl ausgeführt, eine Manpage angezeigt oder Emacs ausgeführt werden.
Lri
quelle
0

Es gibt einen Fehler im AppleScript unter OSX 10.6. (2 Terminalfenster öffnen sich). Ich habe dies behoben, indem ich den Befehl close nach der Aktivierung hinzugefügt habe. Dadurch wird das erste Terminalfenster geschlossen.

on run
    tell application "Finder"
        try
            activate
            set frontWin to folder of front window as string
            set frontWinPath to (get POSIX path of frontWin)
            tell application "Terminal"
                activate
                close
                do script with command "cd \"" & frontWinPath & "\""
            end tell
        on error error_message
            beep
            display dialog error_message buttons ¬
                {"OK"} default button 1
        end try
    end tell
end run
Master Bee
quelle
2
Warum sollten Sie ein Terminalfenster schließen wollen? Wird das nicht die Arbeit zerstören, die Sie darin gemacht haben?
Rob Kennedy