IngDiaz

Básico – Redirección y tuberías en GNU/Linux

¡Hola a todos!

Ahora les traigo un tema bastante importante para los que usamos bastante la consola en el mundo GNU/Linux, el cual tiene que ver con la redirección y tuberías. Es bastante básico pero creo que a más de alguno le puede servir ésta información.


Redirección

Los comandos en GNU/Linux tienen Entradas y Salidas estándares:

Por defecto tanto la entrada como las salidas estándar de los comandos son la propia terminal.

Este comportamiento es susceptible de ser modificado, según sean nuestras necesidades, gracias a cuatro tipos de redireccionadores que emplea la consola:

Veamos un ejemplo:

ls -lh > miListado.txt

Enviará la lista del directorio al archivo miListado.txt

Si se vuelve a ejecutar la línea anterior, se eliminaría el contenido de miListado.txt y se escribiría nuevamente con la información actualizada. Para mantener la información existente, se debe de usar >> (la salida será añadida al final del fichero nombrado, en lugar de ser sobrescrito)

El típico ejemplo en redirección a la entrada podría ser el siguiente:

mysql -u root -p mi_base_datos < respaldo.sql

Esta línea de comando nos permite restaurar una BD en MySQL con base a un respaldo (script sql) que tenemos. También se puede usar para enviar correos ( mail oscard@localhost < carta.txt ) pero siento que el ejemplo en MySQL es más claro.

Los mensajes de error se dirigen a la salida número 2 (normalmente es también la terminal). La redirección de ésta salida es utilizada también para evitar que los mensajes de error aparezcan en la pantalla o guardarla en un archivo txt (log) para revisar después; éste escenario sucede cuando ejecutamos una línea de comando en background y no queremos ser estorbado por los mensajes de error que genere el proceso anterior en la terminal.

Para ejecutar un comando en background, colocar el signo & al final de la línea. Ejemplo:

sudo du -sh / &

En éste caso, el proceso se estará ejecutando en segundo plano (background) y nosotros podremos continuar trabajando con la terminal. Si desea saber más sobre la gestión de procesos, los remito a ésta entrada de blog.

Ejemplo de redirección de salida de error:

ln carpeta carpeta_dos 2> error.txt

En éste caso, no se mostrará nada en pantalla y se creará un archivo error.txt con el siguiente contenido:

ln: «carpeta»: no se permiten enlaces fuertes para directorios

El cual es la salida de error. ¿Para qué puede ser útil? si digamos queremos copiar una gran cantidad de archivos en una carpeta pero queremos al final revisar todos los errores de copia que hubieron. Podría ser así: cp -R /home /media/respaldo/ 2> errores.txt


Tuberías

El uso de tuberías (pipes) es la característica de la consola que nos permite conectar una cadena de comando en una tubería, donde la salida estándar de la primera es enviada directamente a la entrada estándar de la segunda y así sucesivamente.

Para el ejemplo, usaremos el comando sort, el cual nos permite ordenar los registros o líneas de uno o más archivos.

Si quisiéramos conectar la salida del comando ls con la entrada del comando sort. por ejemplo, debemos de utilizar el símbolo | que representa la tubería.

ls /usr | sort -r

Si fuera muy extensa la información del comando anterior, podríamos querer añadir a la tubería el comando more para poder examinar los resultados con comodidad del siguiente modo:

ls /usr | sort -r | more

Otro tipo de tubería es la bifurcación o T.

Con el comando tee, podemos realizar las bifurcaciones. Básicamente es cuando la salida de un comando, además de redirigirse a un determinado archivo, se bifurque también hacia la terminal (para ver el resultado).

Comando tee

Ejemplo de uso:

ls | tee resultado.txt

La salida de ls se bifurca hacia la terminal (nos muestra el resultado en pantalla) y hacia un archivo llamado resultado.txt.

Bien, y eso sería todo lo básico que hay que saber. Obviamente se puede aprovechar al máximo y hacer cosas complejas con las redirecciones, pero dependerá de cada caso en particular (la necesidad).

¡Saludos!

Comentarios por Facebook

comentarios