Porque así es como debe ser.
<(...)in bashes la sintaxis para la sustitución de procesos. Se copia del mismo operador en ksh.
<, (, ), |, &, ;Son tokens léxicos especiales en bashque se utilizan para formar operadores especiales en diferentes combinaciones. <, <(, <<, <&... cada uno tiene su papel. <es por redireccionamiento. <file, < fileredirigiría la entrada de un archivo. <'(file)'redirigiría la entrada de un archivo llamado (file), pero <(file)es un operador diferente que no es un operador de redirección.
< (file)sería <seguido por (file). En ese contexto, en bash, (file)no es válido. (...)puede ser válido como un token único en algunos contextos como:
(sub shell)
func () {
...
}
var=(foo bar)
Pero no en
sort < (cmd)
En la fishcáscara, es diferente. In fish, (...)es para la sustitución de comandos (el equivalente de $(...)in bash). Y <es para la redirección de entrada como en shells tipo Bourne.
Entonces en fish:
sort <(echo file)
sería lo mismo que:
sort < (echo file)
Es decir:
sort < file
Pero eso es algo completamente diferente de bashla sustitución del proceso.
En el yashshell, otro shell POSIX, <(...)no es para la sustitución de procesos sino para la redirección de procesos.
Ahí,
sort <(ls -l)
Corto para:
sort 0<(ls -l)
es un operador de redireccionamiento. Es más o menos equivalente a:
ls -l | sort
Mientras está adentro bash, <(ls -l)se expande a la ruta de una tubería, por lo que es más como:
ls -l | sort /dev/fd/0
En zsh, (...)se sobrecarga como operador global ( (*.txt|*.png)se expandiría a txty pngarchivos) y como calificador global ( *(/)por ejemplo, se expande a archivos de directorio).
En zsh, en:
sort < (ls -l)
Eso se (ls -l)trataría como un calificador global. El lcalificador global es coincidir en el número de enlaces y espera un número después l(como ls -ld ./*(l2)se enumeraría en los archivos con 2 enlaces), así que es por eso que obtiene un zsh: number expectederror allí.
sort < (w)habría dado un zsh: no matches found: (w)error en su lugar, ya que (w)coincide con los archivos con nombre vacío que se pueden escribir.
sort < (w|cat)habría ordenado el contenido de los archivos wy / o caten el directorio actual ...