Я намагаюся зрозуміти названі труби в контексті цього конкретного прикладу.
Я набираю <(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
). І так, запис у трубу буде блокований, поки якийсь процес не зчитується з труби.