Qué es una CLI o Interfaz de Línea de Comandos
Desde un punto de vista teórico y práctico, explicamos qué es una CLI. su funcionamiento, distintos usos y muchas otras cosas que te podrán interesar si te dedicas al desarrollo web o la administración de sistemas.
¿Qué es una CLI?
CLI corresponde con las siglas de Command Line Interface o Interfaz de Línea de Comandos en español. Consiste en una interfaz de usuario que permite interactuar con el sistema operativo o un software específico, mediante la introducción de comandos de texto en el terminal.
Las aplicaciones normales en sistemas operativos de escritorio generalmente interactúan con el usuario mediante interfaces gráficas, con ventanas, botones y todo tipo de controles ya conocidos. Sin embargo, dependiendo del sistema operativo en el que estemos trabajando no siempre disponemos de interfaz gráfica. El caso más común sería un servidor Linux, donde no tenemos ningún tipo de interfaz de usuario gráfica. En un ambiente de servidor todo lo que tenemos que realizar con el sistema operativo, y durante la administración de las aplicaciones, se debe realizar por medio de comandos de consola, lo que sería el CLI.
Sin embargo, las CLI van todavía más allá de lo que es el sistema operativo, ofreciendo el acceso a herramientas avanzadas para el desarrollo, como la generación de código, la administración de proyectos, la ejecución de pruebas de software, la automatización de tareas y mucho más.
Principales componentes y funcionalidades de una CLI
Vamos a ver ahora cuáles son los componentes que encontramos en una CLI de manera general.
Intérprete de comandos
El intérprete de comandos, también conocido como shell, es el componente central de una CLI, que recibe los comandos ingresados por el usuario, los interpreta y ejecuta las acciones correspondientes, mostrando la salida en pantalla. Cada sistema operativo puede tener un intérprete de comandos o incluso distintos tipos de intérpretes en algunos casos en caso que se requiera. Ejemplos populares de intérpretes de comandos son:
- Bash en sistemas Linux, o Unix-like en realidad.
- ZSH también disponible en Linux, aunque más popular recientemente por ser el intérprete predeterminado de las nuevas versiones de MacOS.
- Command Prompt (CMD), exclusivo del viejo MS DOS y las versiones de Windows hasta hace relativamente poco.
- PowerShell, que es el intérprete más moderno de sistemas Windows.
Comandos y argumentos
Los comandos son las instrucciones que enviamos al intérprete para realizar tareas determinadas con el sistema operativo. Los comandos a su vez pueden tener argumentos que son el equivalente a parámetros que podemos especificar para personalizar el funcionamiento del comando. Por ejemplo, en el comando ls para listar el contenido de una carpeta en Bash podemos usar el argumento -a para que muestre también los archivos ocultos.
Autocompletado y ayuda integrada
Muchos de los programas que permiten lanzar comandos sobre los CLI, lo que llamamos habitualmente programas de terminal, ofrecen ayudas a los usuarios a la hora de escribir los comandos que se desean ejecutar. Las ayudas pueden incluir el autocompletado de rutas, el acceso a comandos del historial, etc.
Historial de comandos y búsqueda
Cuando trabajamos con un sistema CLI es habitual escribir repetidas veces los mismos comandos o personalizaciones de éstos. Es por ello que los programas de terminal suelen mantener un historial de comandos ingresados por el usuario. Habitualmente con la tecla arriba del cursor podemos acceder al historial de comandos realizados anteriormente. Algunas CLIi un poco más avanzadas, permiten buscar en el historial de comandos, facilitando la recuperación de comandos usados anteriormente.
Personalización y configuración avanzada
Los CLI ofrecen habitualmente numerosas opciones de personalización y configuración de su funcionamiento. Los usuarios pueden configurar su entorno de trabajo, ajustando variables de entorno, creando alias para comandos frecuentes, etc. Por ejemplo, en Bash, se pueden definir alias y funciones en el archivo .bashrc para personalizar el funcionamiento del terminal.
Ventajas de una CLI
La CLI es una herramienta vital para las tareas de desarrollo moderno así como para la administración de sistemas operativos, incluso para los profesionales DevOps. Vamos a ver algunas de las ventajas que nos ofrece.
Eficiencia en la automatización de tareas
Una de las herramientas más importantes para la automatización de tareas es el propio CLI. Como usuarios podemos conseguir escribir scripts con procesos diversos, todo lo complicado que sea necesario. Al ejecutar estos scripts podemos conseguir correr toda la secuencia de comandos, permitiendo realizar rápidamente tareas repetitivas. Esto no solo ahorra tiempo sino que además reduce la posibilidad de introducir errores al lanzar las secuencias de comandos.
Flexibilidad y control total del sistema
Los usuarios de sistemas operativos con interfaz gráfica estamos acostumbrados a configurar los sistemas por medio de ventanas, menús, etc. Sin duda, de cara al usuario resulta mucho más sencillo manejar este tipo de interfaces gráficas, sin embargo, donde realmente vamos a conseguir un control total del sistema es a través de los comandos, ya que con ellos tenemos al alcance hasta la más mínima opción de personalización.
Rápido acceso a funcionalidades avanzadas
Nuevamente, aunque la interfaz gráfica resulta fácil de usar, la aplicación de comandos resulta muy frecuentemente más productiva para usuarios experimentados, ya que no tienen que hacer secuencias de clics repetidas veces a lo largo de distintas ventanas para conseguir lo que podríamos lograr con un simple comando. Incluso, algunas funcionalidades avanzadas de los sistemas operativos están solo disponibles a través de la CLI. Por ejemplo ocurre esto a la hora de configurar redes, sistemas de firewall, configurar servicios y programas residentes, programar tareas, etc.
Uso eficiente de recursos del sistema
Las interfaces de líneas de comandos consumen muchos menos recursos del sistema que las interfaces gráficas. Por este motivo los servidores Linux sólo tienen interfaz de línea de comandos, lo que permite que ocupe menos espacio en el disco, consuma menos memoria RAM y ciclos de CPU.
Facilita la repetición y documentación de procesos
Otra de las ventajas del trabajo con las CLI consiste en la posibilidad de repetir secuencias de comandos por medio de scripts. Esto no es posible con las configuraciones que realizamos con interfaz gráfica. Por ello resulta mucho más eficiente y claro especificar secuencias de comandos, lo que también permite documentar mejor los procesos requeridos en la empresa para distintos tipos de tareas.
Cómo funciona una CLI
Para entender mejor las interfaces de línea de comandos vamos a detallar mejor su funcionamiento a continuación.
Interpretación de comandos
Una vez que un usuario escribe un comando en la CLI el software que hace de intérprete de comandos (como Bash, PowerShell o Zsh) tiene que realizar el trabajo de interpretación. Esto incluye el análisis del texto introducido en el terminal para saber cuál es el comando y los argumentos enviados. Dentro del proceso de interpretación también tiene que verificar la sintaxis introducida para comprobar si es válida.
Ejecución de comandos y argumentos
Después de interpretar el comando la herramienta de CLI debe realizar su ejecución, usando el programa correspondiente al comando lanzado y pasándole los argumentos adecuados para personalizar el funcionamiento.
Interacción con el sistema operativo
El comando requerirá la ejecución de acciones que involucran al sistema operativo, que será el que finalmente tenga que realizar las tareas solicitadas, ya sea para leer o escribir en el disco, configurar de sistema, o iniciar y detener servicios.
Salida y resultados de los comandos
La ejecución de un comando produce generalmente una salida como respuesta al usuario. Esta salida se compone de texto y se mostrará en el programa de terminal. Incluso, con la salida de determinados comandos podemos realizar la entrada de nuevos comandos mediante el uso de tuberías, también llamadas pipes.
Personalización y configuración de la CLI
Los anteriores pasos describen el flujo de escritura y ejecución de comandos en el CLI. Para completar la información es importante mencionar posibilidades de configuración. Ésta se realiza generalmente mediante archivos de configuración, con texto plano, que incluyen las instrucciones necesarias para personalizar el intérprete de línea de comandos. Dependiendo del modelo del intérprete del CLI usará unos archivos de configuración u otros. Por ejemplo, .bashrc sería el de Bash o .zshrc el de ZSH.
Casos de uso de las CLI
La herramienta de línea de comandos es extremadamente útil en el campo del desarrollo, la administración de sistemas o la configuración de los flujos de trabajo de las empresas. Algunos de los casos de uso más frecuentes son los que podemos encontrar a continuación.
Automatización de tareas repetitivas
Como hemos dicho ya, la automatización de tareas repetitivas es un caso de uso muy frecuente de las CLI. Gracias a estos scripts se puede ahorrar mucho tiempo y reducir la posibilidad de errores.
Gestión y administración de sistemas
Cuando se trata de registrar los sistemas operativos las CLIs son la primera herramienta para conseguirlo. Nos permiten de una manera completa y rápida la configuración de redes, la instalación de software, la configuración de los servicios, gestión de usuarios y mucho más.
Desarrollo de software y programación
En los últimos años las CLI también han irrumpido con fuerza en el desarrollo de software y la programación. Gracias a los comandos se puede generar código de base para la creación de proyectos o artefactos dentro de éstos, la gestión de las versiones de código con sistemas como Git, o la ejecución de las pruebas automatizadas.
Análisis y manipulación de datos
Para realizar el análisis y manipulación de datos de manera sencilla también podemos utilizar la línea de comandos y herramientas como awk, sed, o grep.
Operaciones en la nube y DevOps
Otro ámbito donde se utiliza de manera intensiva la línea de comandos es en las operaciones para implementar los flujos de desarrollo, pruebas y despliegues de manera automatizada. Por medio de herramientas de CLI se puede gestionar también todo tipo de infraestructuras en la nube y las operaciones DevOps.
Abrir la interfaz de la línea de comandos según el sistema operativo
Ya para acabar vamos a ver cómo abrir una interfaz de línea de comandos en los sistemas operativos más importantes.
Windows
Windows es uno de los sistemas que permiten trabajar con más modelos de intérpretes de línea de comandos, desde CMD a Powershell, pasando por Bash.
- Command Prompt (CMD): Se puede abrir escribiendo «cmd» en el menú de inicio.
- PowerShell: Se puede abrir buscando «PowerShell» en el menú de inicio.
Si queremos utilizar Bash como intérprete de línea de comandos necesitaremos instalar programas como Git o Cmder.
Otra opción más moderna que nos permite combinar distintos intérpretes de línea de comandos es Windows Terminal, un programa que podemos instalar directamente de la Windows Store y que nos permite abrir fácilmente sesiones de terminal donde se utiliza CMD, PowerShell o incluso WSL (Windows Subsystem for Linux), lo que nos permite usar Linux dentro de Windows de manera sencilla e integrada.
macOS
En macOS disponemos de un programa específico para abrir la interfaz de línea de comandos que ya viene instalado de casa en el propio sistema operativo. El programa se llama «Terminal».
Podemos encontrar terminal desde la pantalla de aplicaciones o buscando «Terminal» en Spotlight.
Linux
Ya para lo que respecta a Linux los programas disponibles para usar el intérprete de línea de comandos son bastante variados. Cualquier distribución de Linux ofrece un programa de terminal que funciona de manera muy integrada con el propio sistema operativo. Algunas opciones populares son:
- Terminal: Se puede abrir desde el menú de aplicaciones o presionando Ctrl + Alt + T. (en sistemas Gnome como Ubuntu)
- Konsole: El terminal por defecto en KDE, accesible desde el menú de aplicaciones.