Warum kann ich pwd nicht auf macOS öffnen?

12

Dies ist MacOS-spezifisch, scheint aber zu unixartig, um in der Ask Different- Community mitzumachen .

In Terminal kann ich pwddas Ergebnis kopieren und das Ergebnis eingeben openund einfügen. Der Ordner wird dann im Finder geöffnet

pwd | open

druckt die Hilfedokumentation für open. Warum funktioniert das Pfeifen nicht, aber das Einfügen?

Futter
quelle
Dies funktioniert nur, wenn Sie von open erwarten, dass Sie den Verzeichnisnamen nach dem Drücken der Eingabetaste eingeben.
Jasen
9
Dies sollte auch (kein Mac-Benutzer) funktionieren: open .(für das aktuelle Verzeichnis)
UniversallyUniqueID
@ BharadwajRaju open .funktioniert und scheint am einfachsten zu sein. ty.
Chuck

Antworten:

19

Ich habe keinen Mac, kann ihn also nicht testen, aber die Lösung sollte ungefähr so ​​aussehen:

open "`pwd`"

Nicht alle Programme beziehen ihre Eingaben, stdindie für die Funktion der Pipe erforderlich wären.

Julie Pelletier
quelle
1
Die doppelten Anführungszeichen sind nicht erforderlich.
bis zum
3
@tbodt: Probieren Sie es aus /var/tbodt's files.
Julie Pelletier
Ich hätte gedacht, dass bash das als ein Argument behandeln würde ... Deshalb verwende ich bash nicht.
bis zum
2
@tbodt: Wie würde eine Shell wissen, ob der verwendete Speicherplatz Argumente oder einen Teil eines Arguments trennt?
Julie Pelletier
2
@jamesdlin: Beschweren Sie sich über das bashEntwicklungsprojekt, aber vergessen Sie nicht, auch alle älteren Shells und die meisten neueren Shells zu zerschlagen, während Sie dabei sind. Ende der Durchsage!
Julie Pelletier
27

Das openDienstprogramm auf dem Mac liest nicht aus der Standardeingabe, sondern bezieht seine Argumente aus der Befehlszeile.

Um das aktuelle Arbeitsverzeichnis zu öffnen, müssten Sie sagen

$ open "$( pwd )"

oder

$ open "$PWD"

oder einfach

$ open .

wie in den Kommentaren unten ausgeführt.

Mit dem -fFlag openkann das Lesen von der Standardeingabe veranlasst werden, es kann jedoch nur das geöffnet werden, was es im Standardtexteditor empfängt.

Kusalananda
quelle
1
Wenn die Shell (t) csh ist, möchten Sie open $cwd:qstattdessen. Und open (pwd)/ open $PWDwenn es istfish
Stéphane Chazelas
1
@ StéphaneChazelas Ich glaube, die Standard-Shell unter Darwin ist bash, aber es ist immer gut, Lösungen für andere Shells zu finden.
Kusalananda
Der Vollständigkeit halber mit rc, es, akangaSchalen: open `pwdoderopen `{pwd}
Stéphane Chazelas
5
Alternativ können Sie die Syntax open .für das aktuelle Arbeitsverzeichnis oder das übergeordnete Verzeichnis open .. oder für zwei Verzeichnisse open ../..usw. verwenden.
fd0
@ StéphaneChazelas: Warum wäre eine csh-bezogene Shell $cwd:qvorzuziehen "$cwd"?
G-Man
9

Die anderen Antworten sind völlig richtig. Wenn Sie eine einfache Kurzform wünschen , können Sie wie in @ fd0 vorgeschlagen vorgehen und einfach verwenden

open .

um das aktuelle Verzeichnis zu öffnen. Das aktuelle Verzeichnis heißt .(ein einzelner Punkt) in Unix, das übergeordnete Verzeichnis ..(zwei Punkte).

serv-inc
quelle
8
pwd | xargs open

xargs schiebt seine Standardeingabe in die Argumente seines ersten Arguments.

dbanet
quelle
2
Dies ist nur der Fall, wenn der aktuelle Arbeitsverzeichnispfad keine Leerzeichen oder Zeilenumbrüche oder einfache Anführungszeichen oder doppelte Anführungszeichen oder umgekehrte Schrägstriche enthält.
Stéphane Chazelas
pwd | xargs -d '\n' open
belkka
0

Sie können eine Pipeline mit verwenden -f, um den Inhalt des vorherigen Befehls in einem Texteditor zu öffnen. Dies gilt nur für Texteditoren. Für andere Apps müssen Sie den Vorschlag in den anderen Fragen verwenden.

Zum Beispiel:

ls | open -f

Dies würde Ihren Standard-Texteditor mit dem lsAusgabeinhalt öffnen .

Sie können den zu verwendenden Texteditor auch wie folgt angeben -a:

ls | open -a 'Atom' -f

Dies würde Atom mit dem lsAusgabeinhalt öffnen .

Pau Chorro
quelle