「<<(…)」リダイレクトとはどういう意味ですか?


32

次のコマンドを使用してrvm(rubyバージョンマネージャー)がインストールされていることを確認しました。

bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )

だから私は理解して、我々はスクリプトの内容を取得し、bashのに渡す(私は信じている< <<<?同じものである)私はに興味が< <一部、ネット上の説明の後が見つかりました:

<< トークン手段は、トークンが見つかるまでプログラムのSTDINとして現在の入力ストリームを使用します。

これはどういうわけか私には明らかではありませんが、誰かが例を作ったり、より簡単な方法で説明したりできますか?

回答:


40

いや、< <<<同じものではありません。

1つ目は<<(command)構文の最初の文字と組み合わされた共通のリダイレクト文字で構成されます。これは、プロセス置換として知られるksh構造体(bashおよびにもあります)であり、出力を取得して、書き込み先のパイプのもう一方の端を参照する名前を持つファイルに出力します。zshcommandcommand

他の言葉では、あなたが考えることができます< <(command)よう< file、ファイルはの出力を含んでいる場合、command


5
数日前にこのコマンドについて学びました。これは非常に便利なコマンドです。これでできることはあなたの想像力によってのみ制限されます:例えば、このコマンドはあなたに隠されたファイルだけのリストを与えます:diff <(ls) <(ls -a)
Khaja Minhajuddin

1
この構文は確かに非常に便利かもしれませんが、Stonerainの特定のケースでは、単純なパイプと比較して付加価値を提供するようには見えません。
jlliagre

1
上記の構文では役に立ちません。ただし、少し変更した方がはるかに優れています。STDINを盗むのbash <(curl ...)bash < <(curl ...)はなく、プロンプトに自由に答えてスクリプトに入力することができます。
タイラー

<()を使用することは、最初にファイルに$ variablesを不必要に書き込む代わりに、複数の$ variablesをコマンドに直接送信するための優れた選択肢のようです。差分<(エコー"$テキスト1")<(エコー"$テキスト2") stackoverflow.com/questions/13437104/...
Sepero

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