Command line interface (CLI)
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
informaticos. 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.
Funcionamiento:
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
[parametros] 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 implementanciones 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 Rhino). 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.
Estándar de innovación:
No existe ninguna normativa
obligatoria en cuanto al formato de invocación (escritura y ejecución) o a la
documentación que las aplicaciones o funciones deben presentar. No obstante, se
han acuñado estándares informales al momento de definir formas. El más
importante consiste en la utilización de corchetes [ ] para indicar parámetros
opcionales.
Sistemas operativos:
Programa o sistema operativo | Orden | Tipo de programa |
---|---|---|
Bourne | ls | Shell de Unix |
CMD | dir | Shell de Windows |
NewShell | list o dir | AmigaDOS (shell de AmigaOS/MorphOS/AROS) |
Matlab | dir | Procesamiento matricial |
Quake | /dir | Videojuego para PC |
TACL | FILEINFO | Shell de Guardián |
Python Shell | os.listdir('.') | Python, lenguaje de alto nivel |
Glosario:
AutoCAD: Es un software del tipo CAD ( Computer Aided Design) que en castellano significa diseño asistido por computadora, y que fue creado por una empresa norteamericana especializada en este rubro llamada Autodesk.Rhinoceros 3D: Rhinoceros es un software de Dibujo Asistido por Computadora (CAD) que permite hacer modelos tridimensionales ( 3D ) con mucha facilidad ya que es muy poderoso y amigable.
Windows PowerShell: Es una interfaz de consola (CLI) con posibilidad de escritura y unión de comandos por medio de instrucciones (scripts en inglés). Es mucho más rica e interactiva que sus predecesores, desde DOS hasta Windows 7.
Stdout: Es un concepto típico de los sistemas operativos Unix.
Portátiles: Que es fácil de mover y transportar de un lugar a otro por ser manejable y de pequeño tamaño.
Fundamentales: Que sirve de fundamento o de base.
Programación: Conjunto de programas que se retransmiten por radio o televisión.
Videojuegos: Es una aplicación interactiva orientada al entretenimiento que, a través de ciertos mandos o controles, permite simular experiencias en la pantalla de un televisor, una computadora u otro dispositivo electrónico.
Interfaz: Dispositivo capaz de transformar las señales generadas por un aparato en señales comprensibles por otro.
Parámetros: Elemento o dato importante desde el que se examina un tema, cuestión o asunto.
Stdout: Es un concepto típico de los sistemas operativos Unix.
Portátiles: Que es fácil de mover y transportar de un lugar a otro por ser manejable y de pequeño tamaño.
Fundamentales: Que sirve de fundamento o de base.
Programación: Conjunto de programas que se retransmiten por radio o televisión.
Videojuegos: Es una aplicación interactiva orientada al entretenimiento que, a través de ciertos mandos o controles, permite simular experiencias en la pantalla de un televisor, una computadora u otro dispositivo electrónico.
Interfaz: Dispositivo capaz de transformar las señales generadas por un aparato en señales comprensibles por otro.
Parámetros: Elemento o dato importante desde el que se examina un tema, cuestión o asunto.
Comentarios
Publicar un comentario