La redirección de datos es un elemento básico de Bash ya que nos permite controlar hacia dónde se volcarán los datos de salida de un comando o script, o de dónde obtenemos los datos de entrada.
Tenemos tres descriptores:
- stdin: Entrada estándar.
- stdout: Salida estándar. También se abrevia con el número 1.
- stderr: Error estándar. También se abrevia con el número 2.
Esto nos dará varias opciones. La primera, redirigir la salida estándar a un fichero, para lo que usamos el operador >:
ls -l > fichero.txt
En el ejemplo de arriba ejecutamos el comando ls -l pero le decimos que nos guarde el resultado en un fichero. Ahora vamos a redirigir el error estándar a un fichero, usando el operador 2>:
grep pri * 2> error.txt
En este caso ejecutamos el comando grep pri * y lo que sacamos al fichero son los errores. Luego podemos combinar la salida y sacar la salida el estándar por el error estándar o viceversa:
#Sacamos el error estándar por la salida estándar grep pri * 2>&1 #Sacamos la salida estándar por el error estándar grep pri * 1>&2
Finalmente vamos a ver cómo sacar la salida y el error estándar juntos a un fichero:
grep pri * &> todo.txt
Esto es muy útil si queremos ejecutar un comando o un script en silencio, por ejemplo uno que se ejecute en una tarea programada con cron, ya que no veremos nada en pantalla pero tendremos nuestro propio log con los datos de lo ejecutado.