Kann ich im Terminal den aktuellen Finder-Ordner herausfinden?

Es wird häufig gefragt, wie man eine Terminal-Eingabeaufforderung aus einem Finder-Fenster erhält . Ich frage das Gegenteil.

Ich hätte gerne eine Befehlszeilenmethode, um das Arbeitsverzeichnis des "aktuellen" Finder-Fensters zu bestimmen.

Was meinen Sie mit "aktuellem" Finder-Fenster, wenn Terminal die aktive App ist? Per Definition hat dann kein Finder-Fenster den Fokus ...
und mehr Was ist, wenn der Finder mehrere Fenster geöffnet hat - welches ist das aktuelle Fenster?
Das eigentliche Gegenteil wäre wahrscheinlich open .in Terminal ...
Warum ziehen Sie nicht einfach den aktuellen Ordner, der im Finder-Fenster angezeigt wird, in die Befehlszeile des Terminal-Anwendungsfensters?

Antworten (5)

Der folgende Befehl gibt den Pfad zum vordersten Finder-Fenster zurück, wenn Sie danach suchen:

osascript -e 'tell application "Finder" to get the POSIX path of (target of front window as alias)'

Beachten Sie, dass dies keinen POSIX-Pfad zurückgeben kann, wenn das vorderste Fenster keinen POSIX-Pfad hat. Wenn also das vorderste Finder-Fenster eine laufende/abgeschlossene Suche hat, ist es ein intelligenter Ordner oder ein anderer magischer Ort (wie Ihr Mac unter Geräte, der alle eingebundenen Volumes und das Netzwerk auflistet).

Suche/Intelligenter Ordner/Kein Finder-Fenster gibt Folgendes zurück:

Ausführungsfehler: Kann «class fvtg» von Fenster 1 der Anwendung „Finder“ nicht in Typ-Alias ​​umwandeln. (-1700)

Und versuchen Sie, den Befehl auszuführen, wenn Sie Ihren Mac anzeigen:

Ausführungsfehler: Von einem Teil dieses Ausdrucks wurde kein Ergebnis zurückgegeben. (-2763)

Dies ist eine gute Antwort. Ich verwende TotalFinder im "Visier"-Modus (es zieht sich zurück, wenn Sie es nicht verwenden). Wenn TotalFinder zurückgezogen ist und ich diesen Befehl ausführe, erhalte ich immer die Fehlermeldung. Wenn TotalFinder gepinnt ist, bekomme ich den Pfad wie gewünscht. Schade, dass es im fixierten Modus nicht funktioniert; nun ja. Anwendungsfall : Ich wollte ein Befehlszeilentool schreiben, um eine neue Datei (Text, Word, Excel, ...) im "aktuellen" Finder-Fenster zu erstellen, womit ich meine zuletzt fokussierte. Ich habe es anders gemacht, indem ich DTerm verwendet habe, um eine Mini-Eingabeaufforderung aus dem Finder-Fenster zu öffnen. Funktioniert gut.
Danke für die Antwort. Eine kurze Frage vom Anfänger, wo haben Sie einen solchen betriebssystemspezifischen Befehl gefunden. Beispielsweise hört ein Anfänger möglicherweise nie einen solchen Befehl osascript. Haben Sie also eine systematischere Möglichkeit, nach dem gewünschten Befehl zu suchen, als nach dem Zufallsprinzip zu googeln?
@Jason Das Osascript ist in der Tat betriebssystemspezifisch - es weist das Betriebssystem an, ein AppleScript auszuführen (es ist die Befehlszeilenbrücke zwischen dem GUI-basierten AppleScript und der Unix-Shell). MacOS X (na ja, jetzt sind wir bei Version 11) ist die Verschmelzung zweier langjähriger Betriebssysteme: Unix und Mac OS, und dieser spezielle Befehl verbindet ihre beiden unterschiedlichen Skriptsprachen. Dieser spezielle Befehl ist also tief in der doppelten Staatsbürgerschaft dieses Betriebssystems verwurzelt.

pwd: Druckname des aktuellen/Arbeitsverzeichnisses

open .: Aktuelles Verzeichnis im Finder öffnen

Ich bin mir nicht sicher, ob dies die Antwort auf Ihre Frage ist. Was tun Sie auch, wenn Sie eine "Terminal-Eingabeaufforderung von einem Finder-Fenster" erhalten?
Ich glaube, Sie haben das falsch gelesen, Gentmatt. Edit: ja, du hast es gemerkt. Ich denke, er meint Dinge wie "Hier auffordern", einen Dienst zum Öffnen eines Terminalfensters vom Finder, in dem der Pfad im Terminal auf den Pfad des Finders voreingestellt ist. Er sucht nach der Umkehrfunktion

Dieser Typ hat eine großartige Antwort http://coderwall.com/p/vp9zlw

Definieren Sie die beiden Funktionen:

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 { pushd "`ff $@`"; };

Danach können Sie cdffcd in das Finder-Verzeichnis eingeben.

Hallo, ich habe die Formatierung für Sie verbessert. Schauen Sie sich die Live-Vorschau und den Formatierungsleitfaden an, wenn Sie Beiträge schreiben – sie sind sehr nützlich. Willkommen auf der Seite!

Wenn Sie zsh mit oh-my-zsh verwenden, wird die angeforderte Funktionalität vom osx-Plugin bereitgestellt . Nach Aktivierung des Plugins in der Konfigurationsdatei (normalerweise ~/.zshrc) kann man pfdden Pfad zum aktuellen Finder-Fenster finden und cdfdorthin cd.

insertion locationist im Grunde das Ziel von Finder-Fenster 1 oder Desktop.

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

Es gibt einen Fehler in 10.7 und 10.8 , bei dem sich die Ziel- und Einfügepositionseigenschaften auf das zweitvorderste Fenster beziehen, nachdem ein neues Fenster geöffnet wurde.