Потому что так и должно быть.
<(...)в bashэто синтаксис для замены процесса. Он скопирован с того же оператора в ksh.
<, (, ), |, &, ;Специальные лексические маркеры в bashкоторые используются для формирования специальных операторов в различных комбинациях. <, <(, <<, <&... каждый имеет свою роль. <для перенаправления. <file, < fileперенаправил бы ввод из файла. <'(file)'будет перенаправлять ввод из файла с именем (file), но <(file)это другой оператор, который не является оператором перенаправления.
< (file)будет <затем (file). В этом контексте, в bash, (file)не является действительным. (...)может быть действительным как один токен в некоторых контекстах, таких как:
(sub shell)
func () {
...
}
var=(foo bar)
Но не в
sort < (cmd)
В fishоболочке все по-другому. В fish, (...)для подстановки команд (эквивалент $(...)в bash). И <для перенаправления ввода, как в Bourne-подобных оболочках.
Итак, в 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)будет расширяться до txtи pngфайлы) и как спецификатор глобуса ( *(/)например, расширяется до файлов каталога).
В zsh, в:
sort < (ls -l)
Это (ls -l)будет рассматриваться как глобус квалификатор. lГлоб классификатор должен соответствовать по количеству ссылок и ожидает , что число после l(как ls -ld ./*(l2)бы список файлов с 2 ссылки), так вот почему вы получите zsh: number expectedошибку там.
sort < (w)дал бы zsh: no matches found: (w)ошибку вместо того, чтобы, как (w)спички файлы с пустым именем, которые записываемые.
sort < (w|cat)отсортировал бы содержимое файлов wи / или catв текущем каталоге ...