Esta respuesta en Security StackExchange usa una sintaxis bash interesante para generar un archivo en línea:
openssl req -new -x509 -nodes -newkey ec:<(openssl ecparam -name secp384r1) -keyout cert.key -out cert.crt -days 3650
Este bit es particularmente interesante:
<(openssl ecparam -name secp384r1)
Corriendo solo:
echo <(openssl ecparam -name secp384r1)
Vuelvo /dev/fd/63
Así que esto parece hacer un descriptor de archivo temporal con el contenido del archivo.
¿Cómo se llama esto?
Respuesta aceptada:
Se llama sustitución de procesos y es una característica de bash, zsh y ksh (y posiblemente otros, no lo sé). No es POSIX y no debería usarlo en código portátil, pero es muy útil.
Aquí está la sección relevante del manual de bash:
3.5.6 Sustitución de procesos
La sustitución de procesos se admite en sistemas que admiten canalizaciones con nombre
(FIFO) o el método /dev/fd para nombrar archivos abiertos. Toma la forma
de
<(list)
o
>(list)
La lista de procesos se ejecuta con su entrada o salida conectada a un FIFO o algún archivo en /dev/fd. El nombre de este archivo se pasa como un argumento
al comando actual como resultado de la expansión.
Si se usa el formulario>(lista), escribir en el archivo proporcionará entrada para la lista. Si se usa la forma <(lista), el archivo pasado como argumento debe ser
leído para obtener la salida de la lista. Tenga en cuenta que no puede aparecer ningún espacio
entre
se interpretaría como una redirección.
Cuando está disponible, la sustitución de procesos se realiza simultáneamente con
expansión de parámetros y variables, sustitución de comandos y expansión aritmética
.