Estoy tratando de entender las tuberías con nombre en el contexto de este ejemplo en particular.
Escribo <(ls -l)
en mi terminal y obtener la salida como, bash: /dev/fd/63: Permission denied
.
Si escribo cat <(ls -l)
, podría ver el contenido del directorio. Si reemplazo el cat
con echo
, creo que obtengo el nombre del terminal (¿o es así?).
echo <(ls -l)
da la salida como /dev/fd/63
.
Además, este resultado de ejemplo no está claro para mí.
ls -l <(echo "Whatever")
lr-x------ 1 root root 64 Sep 17 13:18 /dev/fd/63 -> pipe:[48078752]
Sin embargo, si doy, ls -l <()
me enumera el contenido del directorio.
¿Qué está sucediendo en el caso de la tubería con nombre?
mkfifo
solo crea la tubería con nombre, sin ningún contenido. Por lo tanto, debe escribirlo usted mismo (por ejemplomkfifo mypipe; ls > mypipe
). Y sí, las escrituras en la tubería se bloquearán hasta que se lea algún proceso de la tubería.