Estos canales son usados involuntariamente por todos los usuarios de Linux y todo aquel que ha escrito un script suele encontrarse con uno de estos canales, especialmente con el último.
- El canal de entrada se llama stdin y lleva un descriptor numérico llamado 0.
- El canal de salida se llama stdout y lleva un descriptor numérico llamado 1.
- El canal de error se llama stderr y lleva un descriptor numérico llamado 2. Este canal puede ser redirigido a otro, ya sea el canal 0 o el 1.
Cómo acabamos de ver, el canal de error posee el descriptor numérico 2. Con lo que sólo habría que redirigir la salida del canal de error a un fichero mediante el 2>${fichero}. Así que si queremos que la salida de error del comando rm test.txt vaya a un fichero, sólo habría que hacer lo siguiente:
rm test.txt 2>/tmp/errores.log
Otra opción es redirigir un canal a otro, para luego redirigir el contenido de ambos a un fichero con por ejemplo:
rm test.txt >/tmp/errores.log 2>&1
Esta redirección es más común cuando se quiere ejecutar un script de forma automática y no se quiere importunar al usuario que esté conectado por consola con mensajes de error o de salida que pueda dar este script, pero se desea tener un registro de lo que pueda generar dicho script por si hay cualquier problema. Un buen ejemplo de este tipo de redirecciones es el fichero crontab (tareas programadas en Linux) que ejecuta un script o comando de forma automática a una hora determinada y no nos interesa que nos muestre notificación o error alguno.
Muchos dirán que aunque ven útil el hecho de no ser importunados por mensajes, no quieren tener un fichero de log que vaya incrementándose poco a poco y ocupando espacio innecesario en el disco duro. Por fortuna, esto se puede arreglar haciendo que los canales vayan redirigidos a la nada. Así, evitamos tanto ser importunados cómo llenar espacio innecesario en el disco. Para redirigir a la "nada", aplicando el ejemplo anterior escribiríamos:
rm rest.txt >/dev/null 2>&1
Esta última redirección es la que se ve más a menudo en el fichero crontab.
En conclusión, los canales pueden parecer algo abstracto o incluso, para algunos, aburrido, pero la verdad es que para aquellos que jueguen con crontab o quieran ejecutar algunos scripts, tienen un valor incalculable.
Saludos.
No hay comentarios :
Publicar un comentario