Por lo general, queremos ver el resultado de los comandos por pantalla. Pero también puede ser útil guardar esa información en un archivo para verla o procesarla luego. De la misma manera, casi siempre suministraremos argumentos a dichos comandos a través del teclado. Sin embargo, existe la posibilidad de hacerlo desde un archivo existente. En ambos casos recurriremos a redirecciones en la shell, tema que presentaremos en este post y continuaremos en el próximo.
Redirecciones en la shell
Bash, como las demás shells, utiliza canales de E/S (Entrada/Salida) para leer y escribir datos. Como lo mencionamos más arriba, el canal de entrada por defecto es el teclado, y el canal de salida es la pantalla. Los errores constituyen un canal especial y por defecto son enviados a la pantalla (aunque esto puede cambiarse).
Las redirecciones más comunes son las siguientes:
- De salida: nos permiten enviar el resultado de un comando hacia un archivo. Si hubiere errores, también podemos indicar que se registren.
- De entrada hacen que sea posible utilizar el contenido de un archivo como argumento para un comando.
- Las tuberías se utilizan para enviar el resultado de un comando como entrada para otro.
Redirecciones de salida
Por ejemplo, en el caso de que /var/log/httpd exista pero /var/log/alumno no:
ls -l /var/log/httpd /var/log/alumno > prueba1.txt
se guardará el resultado de ls -l /var/log/httpd
en prueba1.txt pero se mostrará el error relacionado con /var/log/alumno por pantalla, como vemos en la Fig. 1:
Si deseamos también redireccionar el error a este archivo deberemos hacer
ls -l /var/log/httpd /var/log/alumno > prueba1.txt 2>&1
como también observamos en la Fig. 1. En uno u otro caso, la shell lee las redirecciones de derecha a izquierda. Por eso, en este último ejemplo enviamos el canal 2 (stderr o error estándar) hacia el número 1 (stdout, o salida estándar). Como consecuencia, los mensajes de error pasarán por la salida estándar primero y esta última se redirigirá hacia prueba1.txt para finalizar.
Para agregar mediante una redirección de salida más contenido a un archivo ya existente debemos utilizar el operador >> en vez de >. A diferencia del primero, este último sobreescribirá los contenidos del archivo.
En el próximo post hablaremos sobre estos dos últimos tipos de redirecciones. ¡Suscribite al blog para no perdértelo!
Te invitamos a conocer la propuesta completa de Carrera Linux Argentina para convertirte en un experto y completo sysadmin desde cero. En nuestro sitio web Aprender Linux podrás encontrar más detalles y contactarnos si te surgen preguntas o dudas. ¡Esperamos tu consulta!