それがそうであることを意味するからです。
<(...)in bashはプロセス置換の構文です。の同じ演算子からコピーされkshます。
<、(、)、|、&、;特殊な字句であるbash異なる組み合わせで特殊な演算子を形成するために使用されます。<、<(、<<、<&...それぞれが自分の役割を担っています。<リダイレクト用です。<file、< fileファイルから入力をリダイレクトします。<'(file)'と呼ばれるファイルから入力をリダイレクトします(file)が<(file)、リダイレクト演算子ではない別の演算子です。
< (file)に<続き(file)ます。その意味で、でbash、(file)有効ではありません。(...)次のようなコンテキストでは、単一のトークンとして有効になります。
(sub shell)
func () {
...
}
var=(foo bar)
しかしではない
sort < (cmd)
ではfish、シェル、それは違います。コマンド置換(のと同等のためですで)。また、Bourneのようなシェルのような入力リダイレクト用です。fish(...)$(...)bash<
だからfish:
sort <(echo file)
次と同じです:
sort < (echo file)
あれは:
sort < file
しかし、それはのbashプロセス置換とはまったく異なるものです。
ではyash、シェル、別のPOSIXシェルは、<(...)のためではないプロセス置換が、ためにプロセスのリダイレクト
そこで、
sort <(ls -l)
略称:
sort 0<(ls -l)
はリダイレクト演算子です。以下とほぼ同等です。
ls -l | sort
にある間bash、<(ls -l)はパイプのパスに展開されるため、次のようになります。
ls -l | sort /dev/fd/0
ではzsh、(...)グロブ演算子として(およびに(*.txt|*.png)展開される)グロブ修飾子として(たとえば、ディレクトリファイルに展開される)オーバーロードされます。txtpng*(/)
ではzshでは、:
sort < (ls -l)
これ(ls -l)は、glob修飾子として扱われます。lリンクの数に一致することであり、後の数字を期待修飾子グロブl(のようにするとls -ld ./*(l2)、2つのリンクを持つファイルを一覧表示します)ので、あなたが得る理由のzsh: number expected誤差が。
sort < (w)与えられたであろうzsh: no matches found: (w)として代わりにエラーを(w)書き込み可能です、空の名前を持つファイルが一致します。
sort < (w|cat)wおよび/またはcat現在のディレクトリ内のファイルのコンテンツをソートしているでしょう...