Uso de la salida de un comando como contenido de un fichero

En ocasiones es conveniente utilizar la salida de un comando como si fuera el contenido de un fichero que se quiere pasar a otro comando como argumento.

El caso más común con el que yo me encuentro es comparar la salida de dos comandos. Por ejemplo comparar las diferencias entre revisiones de dos ficheros.

git diff mainline -- file1
git diff mainline -- file2

Puesto que diff espera como argumentos nombres de ficheros la solución más inmediata sería enviar la salida de cada comando a un fichero distinto y comparar ambos ficheros. Sin embargo, esto no queda muy bien que digamos.

Afortunadamente los desarrolladores de Bash y Zsh (entre otros intérpretes de comandos) tampoco estaban contentos con esa chapuza, así que implementaron la capacidad llamada Sustitución de Proceso.

La sustitución de procesos permite que la salida (o la entrada) sea referida como un nombre de fichero. Así, la ejecución de diff sobre la salida de los dos comandos anteriores se expresaría de la siguiente forma:

diff <(git diff mainline -- file1) <(git diff mainline -- file2)

Si lo que se quiere es utilizar la entrada de un comando como fichero se expresaría del siguiente modo:

date > >(cat)

Sí, ya sé que es un ejemplo un poco cutre, pero se entiende.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.