J'essaie de comprendre les canaux nommés dans le contexte de cet exemple particulier.
Je tape <(ls -l)
dans mon terminal et obtenir la sortie comme, bash: /dev/fd/63: Permission denied
.
Si je tape cat <(ls -l)
, je pourrais voir le contenu du répertoire. Si je remplace le cat
avec echo
, je pense avoir le nom du terminal (ou est-ce?).
echo <(ls -l)
donne la sortie comme /dev/fd/63
.
En outre, cet exemple de sortie n'est pas clair pour moi.
ls -l <(echo "Whatever")
lr-x------ 1 root root 64 Sep 17 13:18 /dev/fd/63 -> pipe:[48078752]
Cependant, si je donne, ls -l <()
il me liste le contenu du répertoire.
Que se passe-t-il dans le cas du tuyau nommé?
mkfifo
crée uniquement le canal nommé, sans aucun contenu. Vous devez donc écrire vous-même (par exemplemkfifo mypipe; ls > mypipe
). Et oui, les écritures sur le tuyau seront bloquées jusqu'à ce qu'un processus lise à partir du tuyau.