web-dev-qa-db-ja.com

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

これはmacOS固有ですが、 Ask Different コミュニティに参加するには、一義的すぎるようです。

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

pwd | open

openのヘルプドキュメントを出力します。配管が機能しないのに貼り付けが機能するのはなぜですか?

12
Chuck

Macを持っていないのでテストできませんが、解決策は次のようになります。

open "`pwd`"

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

20
Julie Pelletier

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

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

$ open "$( pwd )"

または

$ open "$PWD"

または単に

$ open .

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

とともに -fフラグ、openは標準入力から読み取るようにできますが、デフォルトのテキストエディターで受け取ったものを開くためだけに使用できます。

28
Kusalananda

他の答えは完全に正しいです。 簡単な省略形が必要な場合は、 @ fd0が提案したように =、そして単に使用

open .

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

9
serv-inc
pwd | xargs open

xargs_は、その標準入力を最初の引数の引数に入れます。

9
dbanet

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

例えば:

ls | open -f

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

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

ls | open -a 'Atom' -f

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

0
Pau Chorro