Це називається процес заміщення.
<(list)Синтаксис підтримується обома, bashі zsh. Він забезпечує спосіб передачі виводу команди ( list) іншій команді, коли використання pipe ( |) неможливо. Наприклад, коли команда просто не підтримує введення STDINабо вам потрібен вихід декількох команд:
diff <(ls dirA) <(ls dirB)
<(list)з'єднує вихідний listфайл з файлом у /dev/fd, якщо його підтримує система, інакше використовується названа труба (FIFO) (що також залежить від підтримки системи; жодна інструкція не говорить про те, що станеться, якщо обидва механізми не підтримуються, імовірно, це припиняється з помилка). Потім ім'я файлу передається як аргумент у командному рядку.
zshдодатково підтримує =(list)як можливу заміну на <(list). З =(list)тимчасовим файлом використовується замість файлу у /dev/fdабо FIFO. Він може бути використаний як заміна, <(list)якщо програмі потрібно шукати висновок.
Відповідно до посібника ZSH, можуть бути й інші проблеми з тим, як <(list)працює:
=Форма корисна в якості як /dev/fdі названі реалізації труби <(...)мають свої недоліки. У першому випадку деякі програми можуть автоматично закрити відповідний дескриптор файлу перед вивченням файлу в командному рядку, особливо якщо це необхідно з міркувань безпеки, наприклад, коли програма працює із встановленням. У другому випадку, якщо програма насправді не відкриває файл, підпрограма, яка намагається прочитати або записати в трубку, (як правило, різні операційні системи можуть мати різну поведінку) блокується назавжди і повинна бути вбита явним чином . В обох випадках оболонка фактично постачає інформацію за допомогою труби, так що програми, які очікують, що з'явиться (див. Сторінку людини lseek(2)) у файлі, не працюватимуть.
pfctl -f <(echo "pf rules")скаже поганий дескриптор файлу. використовуючи натомість zsh та = (відлуння "правил pf"), замість цього працює.