Karena memang begitulah seharusnya.
<(...)in bashadalah sintaks untuk substitusi proses. Ini disalin dari operator yang sama di ksh.
<, (, ), |, &, ;Adalah token leksikal khusus di bashyang digunakan untuk membentuk operator khusus dalam kombinasi yang berbeda. <, <(, <<, <&... masing-masing memiliki peran mereka. <adalah untuk pengalihan. <file, < fileakan mengarahkan input dari file. <'(file)'akan mengarahkan input dari file yang dipanggil (file), tetapi <(file)merupakan operator berbeda yang bukan merupakan operator redirection.
< (file)akan <diikuti oleh (file). Dalam konteks itu, dalam bash, (file)tidak valid. (...)dapat valid sebagai token tunggal dalam beberapa konteks seperti:
(sub shell)
func () {
...
}
var=(foo bar)
Tapi tidak di
sort < (cmd)
Dalam fishshell, ini berbeda. In fish, (...)adalah untuk substitusi perintah (setara dengan $(...)in bash). Dan <untuk pengalihan input seperti di shell Bourne-like.
Jadi di fish:
sort <(echo file)
akan sama dengan:
sort < (echo file)
Itu adalah:
sort < file
Tapi itu sesuatu yang sama sekali berbeda dari bashproses substitusi.
Dalam yashshell, shell POSIX lain, <(...)bukan untuk substitusi proses tetapi untuk pengalihan proses
Di sana,
sort <(ls -l)
Pendek untuk:
sort 0<(ls -l)
adalah operator pengalihan. Ini kurang lebih setara dengan:
ls -l | sort
Sementara di bash, <(ls -l)diperluas ke jalur pipa, jadi itu lebih seperti:
ls -l | sort /dev/fd/0
Dalam zsh, (...)kelebihan beban sebagai operator globbing ( (*.txt|*.png)akan diperluas ke txtdan pngfile) dan sebagai kualifikasi glob ( *(/)misalnya diperluas ke file direktori).
Di zsh, di:
sort < (ls -l)
Itu (ls -l)akan diperlakukan sebagai kualifikasi glob. The lgumpal kualifikasi adalah untuk mencocokkan pada jumlah link dan mengharapkan angka setelah l(seperti dalam ls -ld ./*(l2)akan daftar file dengan 2 link), sehingga ini mengapa Anda mendapatkan zsh: number expectedkesalahan di sana.
sort < (w)akan memberikan zsh: no matches found: (w)kesalahan sebagai gantinya (w)cocok dengan file dengan nama kosong yang dapat ditulisi.
sort < (w|cat)akan mengurutkan konten wdan / atau catfile di direktori saat ini ...