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ć cat
z 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?
mkfifo
tworzy 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.