macOSで「pwd」を「open」にパイプできないのはなぜですか?


12

これはmacOS固有ですが、Ask Differentコミュニティに参加するにはあまりにも不自然に思えます。

ターミナルでpwd、結果をコピーし、結果を入力openして貼り付けると、Finderでフォルダーが開きますが、

pwd | open

のヘルプドキュメントを印刷しますopen。パイピングが機能しないのに貼り付けが機能するのはなぜですか?


Enterキーを押した後、ディレクトリ名を入力する必要がある場合にのみ機能します。
-Jasen

9
また、これは(ないMacユーザー)べき作品:open .(カレントディレクトリ用)
UniversallyUniqueID

@BharadwajRajuはopen .機能し、最も簡単に見えます。ty。
チャック

回答:


19

私はMacを持っていないのでテストできませんが、解決策は次のようなものでなければなりません:

open "`pwd`"

すべてのプログラムがstdin、パイプが機能するために必要な入力を受け取るわけではありません。


1
二重引用符は不要です。
tbodt

3
@tbodt:で試してください/var/tbodt's files
ジュリーペレティエ

私はbashがそれを1つの引数として扱うと思っていたでしょう...これが私がbashを使わない理由です。
tbodt

2
@tbodt:使用されているスペースが引数または引数の一部を分離するためのものであるかどうか、シェルはどのように知るのでしょうか?
ジュリーペレティエ

2
@jamesdlin:bash開発プロジェクトについて文句を言ってください。ただし、作業中にすべての古いシェルと最新のシェルをbashすることも忘れないでください。何度も!
ジュリーペレティエ

27

openMac のユーティリティは標準入力から読み取りませんが、コマンドラインから引数を受け取ります。

現在の作業ディレクトリを開くには、次のように言う必要があります

$ open "$( pwd )"

または

$ open "$PWD"

または単に

$ open .

以下のコメントで指摘されているように。

-fフラグ、open標準入力から読み込ませることができますが、それだけは、デフォルトのテキストエディタで受け取るものは何でも開くように。


1
シェルが(t)cshの場合は、open $cwd:q代わりにしたいでしょう。そしてopen (pwd)/ open $PWDもしそうならfish
ステファン・シャゼル

1
@StéphaneChazelasダーウィンのデフォルトのシェルはであると信じていますがbash、他のシェルの解決策を見るのも良いことです。
クサラナナンダ

完全のために、とrcesakangaシェル:open `pwdまたはopen `{pwd}
ステファンChazelas

5
またはopen .、現在の作業ディレクトリ、親ディレクトリ、open .. または2つ以上のディレクトリなどの構文を使用できますopen ../..
fd0

@StéphaneChazelas:なぜcsh関連のシェル$cwd:qよりも望ましいのでしょう"$cwd"か?
G-Manが「Reinstate Monica」と言う

9

他の答えは完全に正しいです。簡単な略記が必要場合は、@ fd0提案どおりに行うことができます。

open .

現在のディレクトリを開きます。現在のディレクトリは.、Unixでは親ディレクトリ..(2つのドット)という名前(単一のドット)です。


9
pwd | xargs open

xargs 最初の引数の引数に標準入力を押し込みます。


2
これは、現在の作業ディレクトリのパスに空白、改行、一重引用符、二重引用符、バックスラッシュが含まれていない場合のみです。
ステファンシャゼル

pwd | xargs -d '\n' open
ベルカ

0

パイプラインを使用-fして、テキストエディターで前のコマンドのコンテンツを開くことができます。これは、テキストエディターにのみ適用されます。他のアプリについては、他の質問の提案を使用する必要があります。

例えば:

ls | open -f

これにより、デフォルトのテキストエディターが開き、ls出力コンテンツが表示されます。

また、使用するテキストエディターを指定することもできます-a

ls | open -a 'Atom' -f

これにより、ls出力コンテンツでAtomが開きます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.