Ce ne sont pas des fichiers temporaires, ce sont des descripteurs de fichiers.
Dans le système de fichiers, ce sont des liens symboliques vers autre chose.
Si tu lances la commande ls -l /dev/fd/, tu verras vers quoi ça mène.
Quand un nom de ficher est fourni à wc, les noms des fichiers sont affichés.
Mais tu dois probablement te demander à quel moment tu as bien pu donner un nom de fichier dans la commande que tu as tapé.
Je pense avec compris avec ce retour de commande.
Je n’ai pas trouvé de documentation qui en parle, mais il semble que, la syntaxe que tu utilises, l’interpréteur de commandes remplace le <(echo foo) par un nom de fichier qui contient le retour de la commande.
Dans ton cas, l’interpréteur de commande lance la commande echo foo et redirige sa sortie standard vers le descripteur 63 de la commande echo (enfin, echo /dev/fd/63 après remplacement) et tu as donc le retour de tout ça.
Si tu veux avoir « foo » comme retour, le mieux reste de lancer cat <(echo foo) (que d’aucuns critiqueront vivement pour que tu ne fasses pas un usage inutile de la commande cat).