cli-comand line interface
Interfaz de línea de comandos
Una típica CLI encontrada en las interfaces gráficas de
diversos sistemas operativos, para ejecutar aplicaciones a través de un
intérprete de comandos.
La interfaz de línea de comandos o interfaz de línea de órdenes
(en inglés, command-line interface, CLI) es un método que permite a los
usuarios dar instrucciones a algún programa informático por medio de una línea
de texto simple. Debe notarse que los conceptos de CLI, shell y emulador de
terminal no son lo mismo ya que CLI es un método mientras que shell y emulador
de terminal son programas informáticos. Sin embargo los tres suelen utilizarse
como sinónimos.
Las CLI pueden emplearse interactivamente, escribiendo
instrucciones en alguna especie de entrada de texto, o pueden utilizarse de una
forma mucho más automatizada (archivo batch), leyendo órdenes desde un archivo
de scripts.
Esta interfaz existe casi desde los comienzos de la
computación, superada en antigüedad solo por las tarjetas perforadas y
mecanismos similares. Existen para diversos programas y sistemas operativos,
para diverso hardware, y con distinta funcionalidad.
Por ejemplo, las CLI son parte fundamental de los shells o
emuladores de terminal. Aparecen en todas las interfaces de escritorio (GNOME,
KDE, Microsoft Windows) como un método para ejecutar aplicaciones rápidamente.
Aparecen como interfaz de lenguajes interpretados tales como Java, Python, Ruby
o Perl. También se utilizan en aplicaciones cliente-servidor, en gestores de
bases de datos, en clientes FTP, etc. Las CLI son un elemento fundamental de
aplicaciones de ingeniería tan importantes como MATLAB y AutoCAD.
La contraparte de CLI es la interfaz gráfica de usuario
(GUI) que ofrece una estética mejorada y una mayor simplificación, a costa de
un mayor consumo de recursos computacionales, y, en general, de una reducción
de la funcionalidad alcanzable. Asimismo aparece el problema de una mayor
vulnerabilidad dada su complejidad.
Las CLI son usadas por muchos programadores y
administradores de sistemas como herramienta primaria de trabajo, especialmente
en sistemas operativos basados en Unix; en entornos científicos y de
ingeniería, y un subconjunto más pequeño de usuarios domésticos avanzados.
En dispositivos portátiles y PDA, las CLI no se utilizan,
debido a lo complejo que resulta ingresar datos de texto, o por la ausencia
total de teclados.
Historia
En los primeros años de las computadoras, y durante la era
de los computadores denominados mainframes, el control de la ejecución de los
programas se hacía desde lugares especiales (normalmente ubicados cerca del
computador en salas con aire acondicionado), donde el administrador manipulaba
directamente la máquina.
Teletipo
Se escribía la orden en el teclado y se recibía la respuesta
impresa en papel. Estos sistemas basados en teletipos dieron origen a la
primera forma eficiente de interactuar con computadores: líneas de texto
simple.
Con el advenimiento del sistema operativo Unix a inicios de
la década de 1970, el uso de la línea de comandos se convirtió en un estándar.
Se canonizaron las reglas de ejecución basadas en tuberías, filtrado de
archivos utilizando comodines, y todas aquellas funcionalidades que permitían
las nacientes interfaces de texto. Los sistemas operativos que vendrían (CP/M,
DOS) adoptarían como propias aquellas cualidades.
Con la popularización de la computadora personal en la
década de 1980, las aplicaciones entraron a un nuevo escenario donde ya no se
tenía que compartir los recursos del sistema con otros usuarios. Ahora cada
usuario contaba con su propia máquina, con la que interactuaba de una forma
mucho más personalizada. Apple y luego Microsoft lanzaron exitosamente al
mercado sistemas que explotaban todos los conceptos visuales que habían sido
desarrollados por Alan Kay y su equipo del PARC, es decir, una interfaz gráfica
para controlar al computador por medio de un ratón.
Hasta la actualidad las GUI permanecen como la interfaz
dominante y las CLI como interfaz secundaria. No obstante, el mismo Dr. Alan
Kay ha señalado que «es necesario desarrollar un nuevo tipo de interfaz» para
optimizar la relación entre humanos y computadores.1
Funcionamiento
Esquema de elementos involucrados en una línea de órdenes.
En su forma más simple, una CLI consiste en un espacio donde
se pueden escribir órdenes (por lo general, señalizado con un prompt ). El
usuario teclea una orden y la ejecuta al pasar a la línea siguiente, utilizando
la tecla Entrar.
Las órdenes dadas a la CLI son con frecuencia de la forma:
PROMPT>aplicación [parámetros] ficheros o URI...
Al finalizar y enviar la orden con la tecla Entrar, un
módulo interpretador de órdenes analiza la secuencia de caracteres recibida y,
si la sintaxis de la orden es correcta, ejecuta la orden dentro del contexto
del programa o del sistema operativo donde se encuentra. Esta forma de trabajo
es secuencial, y equivale a un tipo de programación paso a paso.
El usuario percibe el procesamiento de sus instrucciones en
forma de acción. Si al usuario se le envía esta información de procesamiento en
forma de texto simple, entonces se le llama salida estándar o «stdout». El
usuario también puede recibir un informe textual de errores en un canal
especializado llamado «stderr». Casi todos los shells implementan la visualización
de «stdout» y «stderr» al mismo dispositivo, en la mayoría de los casos la
pantalla.
También es posible usar scripts, es decir, archivos con
instrucciones guardadas como si se estuviesen escribiendo en el momento. En
caso de error, la ejecución del script puede abortarse. De esta forma, la línea
de comandos puede utilizarse sin siquiera tener que lidiar con el prompt, ni
estando presente frente al monitor o teclado.
Implementaciones

Casi cualquier programa puede diseñarse para ofrecer al usuario
alguna clase de intérprete de instrucciones. Por ejemplo, algunos videojuegos
para PC en primera persona tienen un intérprete de órdenes incorporado,
conocido comúnmente como «consola» (no confundir con Videoconsola), utilizado
para diagnóstico y labores administrativas. Quake, Unreal Tournament, Ragnarok Online o Battlefield son algunos ejemplos.
A veces la consola es el único medio para reparar problemas.
Cuando se trata de un programa que interactúa con el kernel
de un sistema operativo se le llama con frecuencia shell. Algunos ejemplos son
los diversas shell de Unix (ksh, csh, tcsh, Bourne Shell, etc.), el histórico
CP/M, y el command.com de DOS, estos dos últimos fuertemente basados en las CLI
de RSTS y RSX-11, sistemas operativos del PDP-11 de DEC. El sistema operativo
Windows Vista prometía una CLI llamada Windows PowerShell, que combinaba
características de las tradicionales shells de Unix con su framework orientado
a objetos .NET. Este desarrollo no fue integrado por defecto en el sistema operativo,
en especial debido a sus riesgos de seguridad iniciales.2
Las implementaciones de lenguajes interpretados suelen
ofrecer también un ambiente de trabajo basado en CLI. En estos ambientes se
crea una instancia de la máquina virtual con la que el usuario puede
interactuar.
Algunas aplicaciones proporcionan tanto una CLI como
una GUI. Un ejemplo es el programa de CAD AutoCAD. El paquete
científico/ingenieril de computación numérica Matlab no proporciona GUI para
algunos cálculos, pero la CLI puede realizar cualquier cálculo. El programa de
modelado tridimensional Rhinoceros 3D (que se usa para diseñar las cajas de la
mayor parte de los teléfonos portátiles, así como miles de otros productos
industriales) proporciona una CLI (cuyo lenguaje, por cierto, es distinto del
lenguaje scripts de Riñó). En algunos entornos informáticos, como la interfaz
de usuario de Smalltalk u Oberon, la mayor parte del texto que aparece en la
pantalla se puede usar para dar órdenes.
Comentarios
Publicar un comentario