Я пытаюсь понять именованные каналы в контексте этого конкретного примера.
Я печатаю <(ls -l)в своем терминале и получаю вывод как bash: /dev/fd/63: Permission denied.
Если я наберу cat <(ls -l), я мог видеть содержимое каталога. Если я заменить catс echo, я думаю , что я получаю имя терминала (или это?).
echo <(ls -l)дает вывод как /dev/fd/63.
Кроме того, этот пример вывода неясен для меня.
ls -l <(echo "Whatever")
lr-x------ 1 root root 64 Sep 17 13:18 /dev/fd/63 -> pipe:[48078752]
Однако, если я дам, ls -l <()он перечисляет мне содержимое каталога.
Что происходит в случае именованной трубы?
mkfifoсоздает только именованный канал без содержимого. Так что вам нужно написать это самостоятельно (напримерmkfifo mypipe; ls > mypipe). И да, записи в канал будут блокироваться до тех пор, пока какой-либо процесс не выполнит чтение из канала.