blog

Si eres programador, porque debes saber manejar la Consola?

Si eres programador, porque debes saber manejar la Consola?

Jose Gratereaux

Jose Gratereaux

Author

Si eres programador, porque debes saber manejar la Consola?

También conocida como interfaz de línea de comandos, interfaz de usuario de consola de comandos o interfaz de usuario de consola. Es un componente que permite la interacción con el usuario donde este debe introducir comandos a un programa en forma de texto (lineas de comando).

Este tipo de interfaces fueron usadas por defecto en sistemas desde la década del 60 hasta los 80s y 90s. Actualmente es escasamente usada por usuarios casuales los cuales se decantan por las interfaces gráficas de usuario (GUI).

Curiosamente se trata de un medio preferido por usuario más avanzados ya que permite un control preciso y poderoso sobre un programa o sistema operativo.

Como todo en esta vida tiene ventajas y desventajas, y esta no es la excepción. Pero antes que nada cabe recalcar que se hará cierto énfasis en este tipo de interfaces ya que a pesar de no ser populares, en el mundo de la programación resultan extremadamente útiles. Ahora si continuemos.

- Pros

Requiere pocos recursos Al manejarse solo con texto no necesita mucho procesamiento lo que le brinda la capacidad de utilizar el tiempo no desperdiciado en cumplir la tarea requerida y no en procesar la visualización de una imagen.

Conciso y poderoso Bajo este paradigma un programa tiene muchísimas opciones que suelen estar ocultas pero pueden ser accedidas mediante el comando correcto dando poder a la herramienta. Esto se dá gracias a que el enfoque es la funcionalidad y no necesariamente la simpleza.

Preferido por expertos Suele ser una tendencia. Lo que no quiere decir que siempre los expertos la emplean o que uno es experto por el simple hecho de usarlas. Gracias al poder que este paradigma y el escaso consumo de recursos los usuarios exigentes suelen utilizarlos.

Esto se dá por ejemplo en el campo de las ingenierías y ciencias de la computación.

Facil de automatizar Gracias a que la interacción se basa en texto es posible unir varios comandos en uno formando procedimientos o scripts, es decir, pequeñas piezas de código con una función específica como ser organizar archivos, aplicar una edición rápida a un documento entre otras.

- Contras

Poco intuitiva La principal razón por la cual suelen ser poco utilizadas es por la complejidad de uso. Normalmente un usuario no sabe qué hacer cuando se topa con este tipo de interfaces. La curva de aprendizaje es larga y muchas veces tediosa si la comparamos con las interfaces gráficas de usuario.

Comandos poco obios Esto va de la mano por lo visto en el apartado anterior. El nombre de un comando puede no coincidir exactamente con su función.

Un ejemplo clásico se dá con el programa CHKDSK en los sistemas Windows. Este se encarga de analizar el disco en busca de errores donde el significado sería “CHecK DiSK”.

No es rica visualmente Otra de las debilidades es que solo permite expresar cosas mediante texto plano. Lo que nos lleva a no poder visualizar imágenes, videos, trabajar en edición multimedia, etc.

No es amistoso para los novatos Combinando estas tres desventajas formamos una más grande. Los usuarios primerizos no saben cómo trabajar salvo que hayan tenido instrucción previa o hayan leído el respectivo manual de referencia.

Cabe recalcar la importancia de recurrir a la documentación y de hecho en la programación es fundamental la afinidad a la lectura de este tipo de materiales.

Por ejemplo si tienes un servidor remoto y deseas acceder al mismo de manera remota, aunque hay programas para acceder de forma visual, imaginemos que tenemos que analizar logs de un 1Gb. Para ello tendríamos que descargarlos en nuestra máquina. Sin embargo si lo hacemos por SSH vía Shell y utilizamos un programa como Tails o Less para ver esos archivos, va a ser mucho mejor que si configuramos un programa de edición de textos en nuestro ordenador con una interfaz gráfica, que se conecte por SSH al servidor y se descargue ese giga de datos y lo vaya visualizando.

Además montar todo eso requiere tiempo y usando la Shell se tarda menos tiempo y va a servir para más cosas.

Otro ejemplo es Git, rapidamente de manera remota podemos clonar un repositorio, actualizarlo o hacer cualquier modificacion via command line, mientras que cualquier GUI nos tarda mas en realizar esta operacion.

Ni hablar de copiar, mover o borrar archivos via FTP, tarda muchisimo mas que realizarlo via consola.

Consola, terminal y shell en la actualidad

Teminal Un terminal se refiere a un programa contenedor que ejecuta un shell. Hace décadas, este era un dispositivo físico que consistía en poco más que un monitor y un teclado. Como los sistemas Unix y del tipo Unix, como GNU/Linux, agregaron mejores sistemas de multiprocesamiento y ventanas, este concepto de terminal se resumió en software. Ahora son conocidos como emuladores de terminal que inicia una ventana en un entorno donde se ejecutará un shell en el que puede ingresar comandos.

Consola La consola es un tipo especial de terminal . Históricamente, la consola era un solo teclado y monitor conectado a un puerto de consola serie dedicado en una computadora utilizada para la comunicación directa a un nivel bajo con el sistema operativo. Los sistemas GNU/Linux modernos ofrecen consolas virtuales. Se accede a ellos mediante combinaciones de teclas (por ejemplo, Ctrl+ Alt+ Fx; la tecla de función numera diferentes consolas) que se manejan en niveles bajos del sistema operativo; esto significa que no hay un servicio especial que deba instalarse y configurarse para ejecutarse. La interacción con la consola también se realiza mediante un programa de shell.

Un dato curiosos es que para enumerar las consolas se utiliza TTYx (por ejemplo: TTY1, TTY2, etc), siendo estas las siglas de abreviatura de los terminales teletipos.

Shell El shell es el programa que realmente procesa comandos y devuelve resultados. La mayoría de los shells también gestionan procesos en primer plano y en segundo plano, historial de comandos y edición de línea de comandos. Estas características (y muchas más) son estándar en bash, el shell más común en los sistemas GNU/Linux modernos.

Algunas de las mas conocidad:

  • Git Bash
  • Power Shell
  • CSH
  • ZSH
Jose Gratereaux

Jose Gratereaux

I'm a software engineer specialized in Laravel, building modern web applications and sharing what I learn along the way. If you enjoyed this post, consider following me on GitHub.