Cette réponse sur Security StackExchange utilise une syntaxe bash intéressante pour générer un fichier en ligne :
openssl req -new -x509 -nodes -newkey ec:<(openssl ecparam -name secp384r1) -keyout cert.key -out cert.crt -days 3650
Ce morceau est particulièrement intéressant :
<(openssl ecparam -name secp384r1)
En cours d'exécution :
echo <(openssl ecparam -name secp384r1)
Je récupère /dev/fd/63
Cela semble donc créer un descripteur de fichier temporaire avec le contenu du fichier.
Comment cela s'appelle-t-il ?
Réponse acceptée :
C'est ce qu'on appelle la substitution de processus et c'est une fonctionnalité de bash, zsh et ksh (et peut-être d'autres, je ne sais pas). Ce n'est pas POSIX et vous ne devriez pas l'utiliser dans du code portable, mais c'est très utile.
Voici la section pertinente du manuel bash :
3.5.6 Substitution de processus
La substitution de processus est prise en charge sur les systèmes prenant en charge les canaux nommés
(FIFO) ou la méthode /dev/fd de dénomination des fichiers ouverts. Il prend la forme
de<(list)
ou
>(list)
La liste de processus est exécutée avec son entrée ou sa sortie connectée à une FIFO ou à un fichier dans /dev/fd. Le nom de ce fichier est passé en tant qu'
argument à la commande actuelle à la suite de l'expansion.
Si la forme>(liste) est utilisée, l'écriture dans le fichier fournira une entrée pour la liste. Si la forme <(list) est utilisée, le fichier passé en argument doit être
lu pour obtenir la sortie de list. Notez qu'aucun espace ne peut apparaître
entre leet la parenthèse gauche, sinon la construction
serait interprétée comme une redirection.Lorsqu'elle est disponible, la substitution de processus est effectuée simultanément avec
l'expansion des paramètres et des variables, la substitution de commande et l'expansion
arithmétique.