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?


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.


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.


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).


8
pwd | xargs open

xargs schiebt seine Standardeingabe in die Argumente seines ersten Arguments.


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 .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.