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

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

これはmacOSに固有のものですが、理解するにはユニークすぎるようです。さまざまなリクエストをしてみてくださいコミュニティ。

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

pwd | open

印刷されたヘルプ文書open。パイピングは機能しませんが、貼り付けは機能するのはなぜですか?

答え1

macOSのユーティリティはopen標準入力から読み取らず、代わりにコマンドラインから引数を取得します。

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

$ open "$( pwd )"

または

$ open "$PWD"

または単に

$ open .

以下のコメントからわかるように。

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

答え2

Macがないためテストできませんが、回避策は次のとおりです。

open "`pwd`"

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

答え3

pwd | xargs open

xargs標準入力を最初の引数のパラメータにプッシュします。

答え4

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

たとえば、

ls | open -f

これにより、出力を含むデフォルトのテキストエディタが開きますls

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

ls | open -a 'Atom' -f

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

関連情報