Curso de Introducción a la Terminal y Línea de Comandos 2019

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

Antes de enseñarte los poderes que nos podrían proporcionar los Pipes, me gustaría mencionarte y recordate que en Linux/Unix cada nuevo proceso generado, es decir, cada nueva aplicación ejecutada, es inicializada con tres canales de datos, canales conocidos cómo streams. Ver clase.

  • Standar Input

  • Standar Output

  • Standar Error

streams.png
  • El Standard input, es la entrada de datos de nuestro programa

  • En el Standard output el programa colocará todos los mensajes que necesita que el usuario visualice. Estos mensajes no deben de considerarse advertencias o errores.

  • En el Standard error el programa colocará todos los mensajes de advertencias y errores que puedan sucitarse durante la ejecución del mismo.

TRABAJEMOS CON LOS INPUTS Y OUTPUTS

Ahora, veamos un ejemplo de cómo podemos sacarle provecho a los stream. El comando history nos permite conocer los últimos comandos ejecutados en nuestra sesión, ya para este punto del curso, seguro has ejecutado varios comandos en la terminal. Basta con que ejecutes history en tu terminal (Te prometo que no pasará nada malo ;D ).

juan@DESKTOP:~$ history

Una vez ejecutado estaremos visualizando en pantalla un listado de todos los comandos que hemos utilizado. Todo el texto que visualizamos (los comandos) se encuentran en el stream de el Standard output.

Si nosotros así lo deseamos, podemos almacenar esa salida en un archivo de texto plano. Basta con utilizar el signo mayor > que, seguido del nombre del archivo

juan@DESKTOP:~$ history > ultimos_comandos.txt

Con el signo mayor que, crearemos el archivo si este no existe, y colocaremos el output del programa allí; En caso que el archivo exista, y esté almacene algún tipo de contenido, el contenido será reemplazado por el output del programa. Si nosotros no queremos perder la contenido que posee un archivo, lo que podemos hacer es utilizar el doble signo mayor que.

juan@DESKTOP:~$ history >> ultimos_comandos.txt

Esto hará que el output sea agregado al final del archivo, sin reemplazar nada.

Una vez tenemos el output almacenado, hagamos algo interesante, utilicemos el comando grep para conocer qué archivos o folders has eliminado recientemente.

juan@DESKTOP:~$ grep < ultimos_comandos.txt "rm"

Al ejecutar esta sentencia estaremos visualizando los últimos comandos que cuentan con rm en su ejecución.

Con el signo menor que, estamos colocando todo el contenido del archivo cómo Standar Input del comando grep. A partir de estos inputs, el programa grep ya puede buscar rm

PIPES - Un gran poder conlleva una gran responsabilidad 💪

Existen comandos para muchas cosas, sin embargo, no existe un comando en la actualidad que lo haga todo. Si queremos hacer tareas complejas, es probable que tengamos que apoyarnos de más de un comando.

Regresemos al ejemplo anterior, donde nosotros necesitábamos conocer los archivos o folders eliminados recientemente. Para solucionar la problemática tuvimos que ejecutar el comando history y su output almacenarlo en un archivo, el cual nos sirvió cómo input del programa grep. ¿Obtuvimos el resultado deseado?, Si, pero, somos programadores par favar, siempre podemos mejorarlo. Es Aquí donde entran los TODOPODEROSOS PIPES a salvar el día, y hacer nuestro trabajo cómo administrador de servidores más sencillo.

Ejecutemos la siguiente sentencia.

juan@DESKTOP:~$ history | grep "rm"

¿Qué ha pasao’ amiwito, obtuviste el mismo resultado que en el ejemplo anterior?, Super interesante, ¿no lo crees? obtuvimos el mismo resultado solo que ahora con una sentencia mucho más corta, legible y sin tener que crear nuevos archivos en nuestro disco duro, bastante cool. 😎

El PIPE nos permitirá encadenar la ejecución de programas, pasando el output de uno cómo el input de otro. En este caso estamos colocando el output de history cómo el input de grep. El orden en el que se ejecutarán los programas es de izquierda a derecha y de esa misma manera es cómo se estarán pasados los outputs.

Y así cómo encadenamos la ejecución de dos comandos podemos hacerlo con tres, cinco, o con la n cantidad que necesitemos. Nosotros no estamos limitados únicamente a encadenar programas Unix/Linux, también podemos encadenar nuestros propios programas, no importa si están escritos en Java, Python, PHP etc… claro, siempre y cuando hayamos tomado en cuentos los streams en su codificación.

Termina el curso de Terminal y Línea de Comandos y nunca pares de aprender 🚀

Curso de Introducción a la Terminal y Línea de Comandos 2019

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

0 Comentarios

para escribir tu comentario

Artículos relacionados