interfaz de línea de comandos (CLI)
¿Qué es una interfaz de línea de comandos?
Una interfaz de línea de comandos (CLI) es una interfaz de usuario basada en texto (UI) utilizada para ejecutar programas, administrar archivos de computadora e interactuar con el equipo. Las interfaces de línea de comandos también se denominan interfaces de usuario de línea de comandos, interfaces de usuario de consola e interfaces de usuario de caracteres. Las CLI aceptan como comandos de entrada que se introducen por teclado; los comandos invocados en el símbolo del sistema son ejecutados por el equipo.
Hoy en día, la mayoría de los proveedores ofrecen la interfaz gráfica de usuario (GUI) como el valor predeterminado para sistemas operativos (SO) como Windows, Linux y macOS. La mayoría de los sistemas basados en Unix actuales ofrecen una interfaz de línea de comandos y una interfaz gráfica de usuario.
El sistema operativo MS-DOS y el shell de comandos en el sistema operativo Windows son ejemplos de interfaces de línea de comandos. Además, las plataformas de desarrollo de lenguajes de programación como Python pueden admitir interfaces de línea de comandos.
La línea de comandos cayó en popularidad tras la introducción de sistemas operativos de computadora personal basados en GUI como Microsoft Windows y el “clásico” Mac OS de Apple en la década de 1980. La línea de comandos sigue siendo una herramienta importante para profesionales de TI, desarrolladores de software, administradores de sistemas, administradores de redes y muchos otros que prefieren una interfaz más precisa y reproducible a sus sistemas.
¿Qué es un shell?
En informática, un programa shell proporciona acceso a los componentes de un sistema operativo. El shell ofrece a los usuarios (u otros programas) una forma de entrar “dentro” del sistema para ejecutar programas o administrar configuraciones. El shell define el límite entre el interior y el exterior.
Los siguientes son los dos tipos de shells de sistemas operativos:
- Los shells basados en CLI ofrecen a los usuarios un modo conciso y eficiente de interactuar con el sistema operativo, sin requerir la sobrecarga de una interfaz gráfica de usuario.
- Los shells basados en GUI se consideran más fáciles de usar para principiantes, pero también incluyen un shell basado en CLI para administradores de sistemas o usuarios avanzados que prefieren interactuar en un símbolo del sistema.
Bash es el shell de línea de comandos más utilizado para sistemas operativos basados en Unix, incluido Linux.
El software que maneja la interfaz de línea de comandos se conoce comúnmente como intérprete de lenguaje de comandos, procesador de comandos o intérprete de comandos. Dos shells CLI conocidos son PowerShell para Windows y Bash para Linux y macOS.
Los Shells son la capa más externa del sistema operativo y a menudo están separados del núcleo del sistema operativo subyacente. Un shell funciona como una aplicación y se puede reemplazar según sea necesario. Un sistema operativo puede tener más de un shell disponible, como en los siguientes ejemplos:
- Microsoft Windows incluye la aplicación Símbolo del sistema y la aplicación PowerShell, que se pueden usar para interactuar directamente con el equipo. El subsistema de Windows para Linux también proporciona una CLI con acceso al sistema subyacente.
- Linux y otros sistemas operativos basados en Unix generalmente proporcionan el Shell Bourne-Again (bash) como el shell predeterminado. Otros shells, incluyendo el shell C, el shell Z y otros, se pueden configurar como el shell predeterminado del sistema.
Debido a que el shell está solo una capa por encima del sistema operativo, los usuarios pueden realizar operaciones que no están disponibles en otros tipos de interfaz, como mover archivos dentro de carpetas del sistema y eliminar archivos bloqueados.
Para obtener el mayor beneficio del uso de un shell CLI, los usuarios deben aprender un lenguaje de scripting. La mayoría de los shells de línea de comandos pueden guardar secuencias de comandos en un script o archivo por lotes que puede ser totalmente programable. El script de shell es la base de la automatización básica de la gestión de sistemas.
¿Cómo funciona el CLI?
Una vez que se ejecuta un sistema informático, su CLI se abre en una pantalla en blanco con un símbolo del sistema y se pueden introducir comandos.
Los tipos de comandos de CLI incluyen los siguientes:
- comandos del sistema codificados como parte de la interfaz del sistema operativo;
- programas ejecutables que, cuando se invocan correctamente, ejecutan aplicaciones gráficas o basadas en texto; y
- programas por lotes (o archivos por lotes o scripts de shell) que son archivos de texto que enumeran una secuencia de comandos. Cuando se invoca con éxito, un programa por lotes ejecuta sus comandos, que pueden incluir tanto comandos del sistema como programas ejecutables.
CLI es más que un simple sistema de comandos / respuestas, ya que la mayoría tiene características adicionales que hacen que uno sea preferible a otro. Algunas características incluyen las siguientes:
- La capacidad de scripting permite a los usuarios escribir programas que se pueden ejecutar en el sistema desde la línea de comandos.
- Los tubos de comando permiten a los usuarios dirigir la salida de un programa para que sea la entrada de otro programa (“canalizar” el flujo de datos).
- Las variables del sistema se pueden establecer en la línea de comandos o se pueden mostrar los valores de esas variables.
- Las funciones de historial de comandos permiten al usuario recordar comandos anteriores emitidos. Algunos guardan el historial de comandos de la sesión (como PowerShell), otros se pueden configurar para almacenar el historial de sesiones durante más tiempo (como bash).
Los comandos y la sintaxis de las CLI tienden a ser muy estables con el tiempo, en parte para permitir la compatibilidad con versiones anteriores de los scripts.
Indicaciones y comandos
Dependiendo del sistema operativo y la CLI, puede haber cientos o incluso miles de comandos ejecutables diferentes disponibles. El conjunto de comandos puede variar drásticamente entre sistemas operativos o aplicaciones.
Por ejemplo, Microsoft define cientos de cmdlets como” comandos ligeros ” que se utilizarán en PowerShell; las funciones de PowerShell son listas de cmdlets que se pueden ejecutar en la línea de comandos.
Algunos comandos se ejecutan en la línea de comandos por sí mismos, como el comando dir:
C:\> dir
Los comandos también se pueden usar con argumentos (a veces denominados parámetros) que modifican cómo se debe ejecutar el comando. Los argumentos siguen el comando y proporcionan detalles adicionales o específicos.
El comando cd “cambiar directorio” en muchas CLI se usa para cambiar el directorio de trabajo actual cuando se incluye como argumento la nueva ruta de directorio deseada, pero en algunos casos (como en MS-DOS o en el símbolo del sistema de Windows) el comando por sí solo devuelve el directorio de trabajo actual.
Este comando restablece el directorio de trabajo actual:
cd \documents\user\working
Los argumentos permiten a los usuarios de la línea de comandos obtener resultados muy específicos que a veces no están disponibles a través de una interfaz gráfica.
Las CLIS modernas proporcionan tuberías, o mecanismos para tomar la salida de un comando y enviarla como entrada a otro comando. La barra vertical, o símbolo”|”, se usa a menudo para este propósito.
El siguiente “revestimiento único” utiliza tuberías para encadenar varios comandos de PowerShell para recuperar información detallada de configuración de red de un equipo Windows:
Get-NetIPAddress | Sort InterfaceIndex | FT InterfaceIndex, InterfaceAlias, AddressFamily, IPAddress
Aunque esta cadena se introduce en la línea de comandos como si fuera un solo comando, incluye los siguientes comandos consecutivos:
- Get-NetIPAddress recupera toda la información de configuración de IP del equipo cuando se introduce sin argumentos.
- Sort InterfaceIndex acepta como entrada la salida del cmdlet Get-NetIPAddress y la ordena por el valor de InterfaceIndex asociado a cada dirección IP incluida en la configuración del equipo.
- FT InterfaceIndex, InterfaceAlias, AddressFamily, IPAddress utiliza el comando Format-Table (FT) para formatear la salida ordenada del comando anterior y muestra los valores especificados para cada dirección IP.
La compatibilidad con versiones anteriores a menudo es un objetivo cuando se introducen nuevas CLI para reemplazar las CLI existentes, como cuando Microsoft reemplazó MS-DOS con el Símbolo del sistema de Windows. Aunque algunos comandos de MS-DOS ya no son compatibles, la mayoría seguirá funcionando en PowerShell como estaba previsto originalmente.
Los comandos comunes de MS-DOS incluyen los siguientes:
Comando | Ejemplo | Notas |
CD | C:\> CD \ user \ programs C:\user\programs> |
Cambia el directorio actual a la ruta especificada. Cuando se introduce sin ruta de acceso, muestra el nombre del directorio de trabajo actual. Si la ruta de acceso se incluye en el símbolo del sistema, el símbolo del sistema cambiará como en el ejemplo (consulte también SÍMBOLO del sistema, a continuación). |
CHKDSK | C:\> CHKDSK a: | Comprueba el disco especificado in en este caso, el disquete de la unidad A: drive y devuelve un informe de estado que muestra el tamaño del disco, el número de archivos y directorios en uso y el número de bytes utilizados. |
COPIA | C:\ > COPIAR autoexec.bat autoexec.BAK | Copia el archivo o archivos especificados. Se puede usar para copiar archivos a duplicados con diferentes nombres de archivo o para copiar archivos en un directorio diferente sin cambiar los nombres. |
DEL | C:\> DEL autoexec.BAK C:\> DEL C:\backups\*.BAK |
Elimina un archivo o archivos. Se puede usar para eliminar archivos en el directorio de trabajo actual o en algún otro directorio. También se puede usar con caracteres comodín para eliminar grupos de archivos. |
DIR | C:\> DIR C:\> DIR c:\copia\*.txt |
Muestra todos los contenidos files archivos y directorios in en el directorio especificado. Si no se especifica ningún directorio, se refiere al contenido del directorio actual. También se puede usar con caracteres comodín para mostrar solo archivos específicos. |
EDLIN | C:\> edlin autoexec.bat | Inicia edlin, un editor de líneas que se puede usar para editar archivos de texto. En este ejemplo, se utiliza para editar la autoexec.archivo bat. |
FORMATO | C:\> FORMATO a: | Formatea un disco para que pueda usarse con MS-DOS. |
MKDIR | C:\> MKDIR c:\NewDIR | Crea un nuevo directorio en la ruta de acceso especificada. |
MÁS | C:\> MÁS autoexec.bat | Muestra el contenido de un archivo, una pantalla a la vez. Se utiliza principalmente para archivos de texto. |
PROMPT | C:\> prompt prompt p d d g g C:\UTIL Vie 11-05-2021> |
Modifica el indicador predeterminado. En este ejemplo, los parámetros se utilizan con el comando para establecer la visualización del indicador como la unidad y la ruta actuales, el día y la fecha y el símbolo mayor que. El indicador resultante se muestra en el ejemplo. |
RMDIR | C:\> rmdir c:\backup | Elimina un directorio. |
TIPO | C:\> tipo autoexec.bat | Muestra el contenido de un archivo de texto, sin saltos de página. |
CLI versus GUI
La interfaz gráfica de usuario es la interfaz de usuario más popular en la actualidad. Una interfaz gráfica de usuario utiliza ventanas, menús e iconos para ejecutar comandos. El uso de un ratón es la forma más común de navegar a través de una GUI, aunque muchas GUI permiten cierta navegación y ejecución de programas a través de un teclado.
Microsoft Word es un ejemplo de aplicación basada en GUI. Un usuario puede cambiar las opciones de diseños y estilos de página seleccionando el icono correspondiente o el menú desplegable con un ratón o teclado.
![una línea de comandos de PowerShell](https://cdn.ttgtmedia.com/rms/onlineimages/Screenshot_1_example_of_powershell_command_line_interface_mobile.jpg)
Una ventaja de una GUI es que la interfaz puede mostrar visualmente las funciones disponibles. Sin embargo, debido a que se basa en la visualización gráfica, una GUI puede no tener el mismo nivel de funcionalidad y control granular que una interfaz de línea de comandos. Por ejemplo, puede requerir numerosos clics y movimiento a través de varios cuadros de diálogo en una interfaz gráfica de usuario para lograr el mismo resultado que una sola línea de comandos.
Además, las interfaces gráficas de usuario (GUI) no admiten fácilmente scripts o automatización. Para tareas comunes, un usuario debe repetir cada clic o navegar por cada diálogo dentro de la interfaz gráfica de usuario manualmente.
Los administradores de sistemas que necesiten administrar cientos, o cientos de miles, de sistemas y configuraciones encontrarán una interfaz gráfica de usuario mucho menos eficiente que una CLI. Un simple comando CLI puede ajustar fácilmente las configuraciones para un gran grupo de sistemas a la vez.
Los comandos y argumentos también se pueden combinar y guardar, y luego ejecutarse como un script cada vez que se requiera una acción específica o un conjunto completo de acciones. La CLI es la herramienta preferida para muchas tareas de gestión de sistemas en toda la empresa.
![un ejemplo de la interfaz gráfica de usuario de Windows 11](https://cdn.ttgtmedia.com/rms/computerweekly/windows-screen-1_mobile.jpg)
Ventajas y desventajas de la CLI
Las siguientes son ventajas de una interfaz de línea de comandos:
- control granular de un sistema operativo o aplicación;
- gestión más eficiente de un gran número de sistemas;
- capacidad de almacenar scripts para automatizar tareas regulares; y
- el conocimiento básico de la interfaz de línea de comandos puede permitir la solución de problemas de conexión de red o la resolución de otras tareas del sistema.
Las desventajas de una interfaz de línea de comandos son las siguientes:
- La interfaz gráfica de usuario es más fácil de usar;
- curva de aprendizaje más pronunciada asociada con comandos de memorización y sintaxis/argumentos complejos; y
- diferentes comandos utilizados en diferentes shells.
La línea de comandos es un gran lugar para convertirse en un experto en el uso de una computadora. Una vez que esté listo, también es el único lugar para aprender a escribir scripts de shell.
Leave a Reply