Próbuję zrozumieć nazwane potoki w kontekście tego konkretnego przykładu.
Wpisuję <(ls -l)w moim terminalu i uzyskać wyjście jako, bash: /dev/fd/63: Permission denied.
Po wpisaniu cat <(ls -l)mogłem zobaczyć zawartość katalogu. Jeśli mam wymienić catz echo, myślę uzyskać nazwę terminala (lub nie?).
echo <(ls -l)daje wynik jako /dev/fd/63.
Również ten przykładowy wynik jest dla mnie niejasny.
ls -l <(echo "Whatever")
lr-x------ 1 root root 64 Sep 17 13:18 /dev/fd/63 -> pipe:[48078752]
Jeśli jednak dam, ls -l <()wyświetla mi zawartość katalogu.
Co się dzieje w przypadku nazwanej rury?
mkfifotworzy tylko nazwany potok, bez żadnej zawartości. Więc musisz do niego napisać (npmkfifo mypipe; ls > mypipe.). I tak, zapisy do potoku będą blokowane, dopóki jakiś proces nie odczyta z potoku.