Ini disebut proses substitusi dan merupakan fitur bash, zsh dan ksh (dan mungkin yang lain, saya tidak tahu). Ini bukan POSIX dan Anda tidak boleh menggunakannya dalam kode portabel, tetapi sangat berguna.
Inilah bagian yang relevan dari manual bash:
3.5.6 Substitusi Proses
Substitusi proses didukung pada sistem yang mendukung pipa bernama (FIFO) atau metode / dev / fd untuk penamaan file yang terbuka. Ini mengambil bentuk
<(list)
atau
>(list)
Daftar proses dijalankan dengan input atau output yang terhubung ke FIFO atau beberapa file di / dev / fd. Nama file ini diteruskan sebagai argumen ke perintah saat ini sebagai hasil dari ekspansi. Jika formulir> (daftar) digunakan, menulis ke file akan memberikan input untuk daftar. Jika formulir <(daftar) digunakan, file yang dikirimkan sebagai argumen harus dibaca untuk mendapatkan output daftar. Perhatikan bahwa tidak ada ruang yang muncul antara tanda kurung <atau> dan kurung kurawal, jika tidak maka konstruk akan ditafsirkan sebagai pengalihan.
Jika tersedia, substitusi proses dilakukan bersamaan dengan ekspansi parameter dan variabel, substitusi perintah, dan ekspansi aritmatika.
git diff --no-index file1 <(cat file2)
akan gagal dengan:error: /dev/fd/63: unsupported file type
. Anda mungkin juga melihaterror: readlink("/dev/fd/63"): No such file or directory
apakah implementasi membuat symlink ke pipa (muncul sebagai tautan yang rusak untuk saya karena beberapa alasan).