มันเรียกว่าการทดแทนกระบวนการและเป็นคุณลักษณะของ bash, zsh และ ksh (และอาจเป็นไปได้ว่าคนอื่น ๆ ฉันไม่รู้) มันไม่ใช่ POSIX และคุณไม่ควรใช้มันในรหัสพกพา แต่มันมีประโยชน์มาก
นี่คือส่วนที่เกี่ยวข้องของคู่มือทุบตี:
3.5.6 การทดแทนกระบวนการ
การทดแทนกระบวนการได้รับการสนับสนุนบนระบบที่รองรับการตั้งชื่อไพพ์ (FIFO) หรือเมธอด / dev / fd ของการตั้งชื่อไฟล์ที่เปิด มันใช้รูปแบบของ
<(list)
หรือ
>(list)
รายการกระบวนการจะถูกรันด้วยอินพุตหรือเอาต์พุตที่เชื่อมต่อกับ FIFO หรือไฟล์บางไฟล์ใน / dev / fd ชื่อของไฟล์นี้ถูกส่งผ่านเป็นอาร์กิวเมนต์ไปยังคำสั่งปัจจุบันเป็นผลมาจากการขยายตัว หากใช้แบบฟอร์ม> (รายการ) การเขียนไปยังไฟล์จะเป็นการป้อนข้อมูลให้กับรายการ หากใช้รูปแบบ <(รายการ) ไฟล์ที่ส่งผ่านเป็นอาร์กิวเมนต์ควรอ่านเพื่อรับเอาต์พุตของรายการ โปรดทราบว่าอาจไม่มีช่องว่างระหว่าง <หรือ> และวงเล็บซ้ายมิฉะนั้นโครงสร้างจะถูกตีความว่าเป็นการเปลี่ยนเส้นทาง
เมื่อพร้อมใช้งานจะทำการทดแทนกระบวนการพร้อมกันพร้อมพารามิเตอร์และการขยายตัวแปรการทดแทนคำสั่งและการขยายเลขคณิต
git diff --no-index file1 <(cat file2)
จะล้มเหลวด้วย:error: /dev/fd/63: unsupported file type
. คุณอาจเห็นerror: readlink("/dev/fd/63"): No such file or directory
ว่าการใช้งานสร้าง symlink ไปที่ไปป์ (ปรากฏเป็นลิงก์ที่ขาดให้ฉันด้วยเหตุผลบางอย่าง)