Dlaczego nie mogę potokować `pwd`, by` open` na macOS?


12

Jest to specyficzne dla systemu macOS, ale wydaje się zbyt unikatowe, aby przejść do społeczności Ask Different .

W Terminalu mogę pwdskopiować wynik, a następnie wpisać openi wkleić wynik, a folder otworzy się w Finderze, ale

pwd | open

drukuje dokumentację pomocy dla open. Dlaczego pipowanie nie działa, a wklejanie?


zadziała to tylko wtedy, gdy open spodziewa się wpisać nazwę katalogu po naciśnięciu enter.
— Jasen

9
Powinno to również działać (nie dla użytkowników komputerów Mac): open .(dla bieżącego katalogu)
— UniversallyUniqueID

@BharadwajRaju open .działa i wydaje się najłatwiejszy. ty.
— Chuck,

Odpowiedzi:


20

Nie mam komputera Mac, więc nie mogę go przetestować, ale rozwiązaniem powinno być coś takiego:

open "`pwd`"

Nie wszystkie programy pobierają dane wejściowe, stdinktóre byłyby konieczne do działania potoku.


1
Podwójne cytaty są niepotrzebne.
— tbodt

4
@tbodt: Wypróbuj /var/tbodt's files.
— Julie Pelletier,

2
@tbodt: Skąd jakakolwiek powłoka wiedziałaby, gdyby wykorzystana przestrzeń służyła do oddzielania argumentów lub ich części?
— Julie Pelletier

2
@jamesdlin: Idź narzekać na bashprojekt programistyczny, ale nie zapomnij również uderzyć wszystkich starszych i większości nowszych powłok, gdy jesteś przy tym. W kółko!
— Julie Pelletier,

1
@JuliePelletier Po prostu mówię, że twierdzisz, że jest to niemożliwe dla żadnej skorupy, ale muszle takie jak ryby zachowują się dokładnie tak, jak opisuje tbodt.
— jamesdlin

28

openNarzędziowy na MacOS nie czyta ze standardowego wejścia, ale ma swoje argumenty z linii poleceń.

Aby otworzyć bieżący katalog roboczy, musisz powiedzieć

$ open "$( pwd )"

lub

$ open "$PWD"

lub po prostu

$ open .

jak wskazano w komentarzach poniżej.

Za pomocą -fflagi openmożna odczytać ze standardowego wejścia, ale tylko w celu otwarcia wszystkiego, co otrzyma w domyślnym edytorze tekstu.


1
Jeśli powłoką jest (t) csh, powinieneś open $cwd:qzamiast tego. I open (pwd)/ open $PWDjeśli jestfish
— Stéphane Chazelas,

1
@ StéphaneChazelas Wierzę, że domyślną powłoką Darwina jest bash, ale zawsze dobrze jest znaleźć rozwiązania dla innych powłok.
— Kusalananda

Dla kompletności, z rc, es, akangamuszle: open `pwdalboopen `{pwd}
— Stéphane Chazelas

5
Lub możesz użyć składni - open .dla bieżącego katalogu roboczego lub katalogu nadrzędnego open .. lub do dwóch katalogów open ../..i tak dalej.
— fd0

@ StéphaneChazelas: Dlaczego miałoby $cwd:qbyć lepiej "$cwd"w powłoce CSS?
— G-Man mówi „Przywróć Monikę”

9

Pozostałe odpowiedzi są całkowicie poprawne. Jeśli chcesz mieć łatwy skrót , możesz zrobić zgodnie z propozycją @ fd0 i po prostu użyć

open .

aby otworzyć bieżący katalog. Bieżący katalog nosi nazwę .(pojedyncza kropka) w Uniksie, katalog nadrzędny ..(dwie kropki).


9
pwd | xargs open

xargs przekazuje standardowe dane wejściowe do argumentów pierwszego argumentu.


2
Dzieje się tak tylko wtedy, gdy bieżąca ścieżka do katalogu roboczego nie zawiera pustych znaków, nowego wiersza, pojedynczych cudzysłowów lub podwójnych cudzysłowów lub odwrotnych ukośników.
— Stéphane Chazelas

pwd | xargs -d '\n' open
— belkka

0

Za pomocą potoku -fmożna otworzyć zawartość poprzedniego polecenia w edytorze tekstu. Dotyczy to tylko edytorów tekstu. W przypadku innych aplikacji musisz skorzystać z sugestii zawartej w innych pytaniach.

Na przykład:

ls | open -f

Spowoduje to otwarcie domyślnego edytora tekstu z lszawartością wyjściową.

Możesz także określić edytor tekstu, który ma być używany, używając -a:

ls | open -a 'Atom' -f

Otworzy to Atom z lszawartością wyjściową.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.