La consola de Linux para novatos (VI)

¿Echabas de menos una nueva entrega de esta serie? Pues deja de sufrir que de nuevo está aqui, para deleite de Geek GNU/Linuxeros!!

consola-linux-tux

En esta entrega de la serie veremos el redireccionamiento de entrada/salida de los comandos. Es decir que los comandos den sus resultados no por la salida estándar que es la pantalla, ni que los tomen por la entrada estándar que es el teclado.

El artículo en inglés (del que tomo inspiración) lo puedes seguir en este enlace: https://news.opensuse.org/2014/07/30/command-line-somedays-part-six/

Puedes leer toda la serie en este enlace: https://victorhckinthefreeworld.wordpress.com/tag/consola-linux/

Empezamos, tomad nota!

twitter_linux

Como he dicho antes, la entrada de datos que necesita un comando, script normalmente suele ser el teclado que es la interfaz mediante la cual escribimos en la consola. Así mismo la interfaz de salida por defecto es la pantalla, es la manera en la que el comando nos presenta la información, resultado o errores de nuestra acción.

Pero podemos cambiar esto redireccionando la entrada o salida de datos por ejemplo a un fichero. Para redireccionar la salida de datos utilizaremos el símbolo > y para la redirección de entrada utilizaremos <

Salida estándar

En capítulos anteriores de la serie hablamos sobre el comando man, que nos da una ayuda o nos presenta en pantalla la página del manal de un comando. Escribiendo esto en la línea de comandos:

man zypper

De esta manera obtendremos información del comando zypper. Pero esa información se muestra en pantalla porque esa es la salida estándar, ¿qué pasa si nosotros la redirigimos a un fichero? Entonces esa información se guardará en un archivo de texto (por ejemplo) para poder consultarla más detenidamente. Para ello basta con redireccionar la salida del comando así:

man zypper > manual.txt

Se creará un fichero de texto llamado manual.txt con toda la información que antes nos salía por la pantalla. Si redireccionáramos otra página del manual al mismo archivo este se sobreescribirá con el último comando, perdiéndose lo anterior.

Pero ¿qué podríamos utilizar si lo que queremos es añadirlo, sin machacar lo que ya hubiera en el archivo? Para ello deberemos utilizar el símbolo >> de esta manera:

man yast >> manual.txt

Al anterior archivo manual.txt con la ayuda de zypper se añadirá la ayuda de yast.

Entrada estándar

Muchos comandos pueden aceptar la entrada desde otro sitio que no sea el teclado, por ejemplo desde un archivo de texto. Para redireccionar la entrada estándar lo haremos así:

sort < lista.txt

El comando sort lo que hace es ordenar unos datos. Hagamos una prueba. Escribe en la consola

touch lista.txt
kate lista.txt

Kate si usas KDE o ábrelo con el editor de texto que prefieras. ahora escribe en él números del 0 al 9 desordenados en distintas filas (también valen letras de la a a la z), así (por ejemplo):

5
4
3
8
1
2
6
9

y ahora ejecuta el comando anterior y verás lo que pasa!!

Rizemos el rizo! redireccionemos la salida de este comando a un archivo donde tendremos los mismo elementos pero ordenados, por ejemplo así

sort < lista.txt > orden.txt

Echa un vistazo a los datos de lista.txt y a los del nuevo archivo que ha creado el comando llamado orden.txt ¿mágia? Nop! el poder de la consola!! 😉

Tuberías

Para conectar varios comandos se utilizan “las tuberías” (curioso nombre, verdad) en inglés llamado pipeline. Lo que hacen las tuberías es encauzar la salida de un comando a la entrada de otro, y así concaternar varios para conseguir lo que deseamos. Se representa mediante este símbolo |

Por ejemplo podemos escribir una variante del comando anterior. Si nosotros escribimos este comando

head lista.txt

Nos mostrará el contenido de este archivo por pantalla. Pero ¿qúe tal si lo encauzamos para que antes de darnos el resultado nos lo ordene? Probad a escribir esto:

head lista.txt | sort

El resultado del primer comando, nos lo encauza y lo pasa por el comando sort por lo que al llegar a la pantalla saldrá ya ordenado ¿no? ¿y si lo quisiéramos guardar en un archivo? ale probad!!

Filtros

Hay un montón de filtros que pueden procesar información de forma muy útil. Estos filtros cogen la información, ya sea de un comando o archivo, la procesan y la ponen a disposición de otro comando o de otro filtro, según las necesidades.

Hemos visto el filtro sort, o head pero hay muchos otros como uniq, grep, fmt, pr, tail, tr, sed, awk. que realizan grandes tareas útiles. Os propongo que les echéis un vistazo y hagáis pruebas!!

Espero que como siempre te haya resultado interesante. Los comentarios están abiertos a la participación de todos, y tal como habéis hecho otras veces compartir vuestros pequeños trucos o aportes…

Nos vemos en la próxima entrega! La última de la serie, en este enlace: https://victorhckinthefreeworld.wordpress.com/2014/08/14/la-consola-de-linux-para-novatos-vii/

—————————————————

 

 

2 pensamientos en “La consola de Linux para novatos (VI)

Me gustaría saber tu opinión. Deja un comentario (Puedes usar MarkDown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s