Diferencia entre revisiones de «Interfaz de línea de comandos»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
m Revertidos los cambios de 79.159.78.188 (disc.) a la última edición de AVBOT
Línea 95: Línea 95:
| ''Shell de Guardian''
| ''Shell de Guardian''
|-
|-
|}
|}zoofilia


== Nomenclatura: Consolas v/s CLI v/s TUI v/s TTY v/s Terminal v/s Emulación v/s Shell ==
== Nomenclatura: Consolas v/s CLI v/s TUI v/s TTY v/s Terminal v/s Emulación v/s Shell ==
Línea 102: Línea 102:
Históricamente, la consola era un terminal de datos (es decir, un dispositivo físico), pero como dichos aparatos ya casi no existen, la palabra pasó a utilizarse como sinónimo de "pantalla del CLI". La expresión ''consola'' se utiliza más comúnmente en juegos de PC para referirse a la ventana donde se pueden ingresar comandos.
Históricamente, la consola era un terminal de datos (es decir, un dispositivo físico), pero como dichos aparatos ya casi no existen, la palabra pasó a utilizarse como sinónimo de "pantalla del CLI". La expresión ''consola'' se utiliza más comúnmente en juegos de PC para referirse a la ventana donde se pueden ingresar comandos.


Por otro lado, un [[emulador de terminal]] (o TTY) es un programa que permite imitar aquellos viejos terminales, para acceder a diversos servicios aún vigentes bajo ese tipo de formato (como [[Telnet]]). Ejemplos de estos programas son: modetrate [[HyperTerminal]], [[Xterm]], [[PuTTY]] y [[SSH]].
Por otro lado, un [[emulador de terminal]] (o TTY) es un programa que permite imitar aquellos viejos terminales, para acceder a diversos servicios aún vigentes bajo ese tipo de formato (como [[Telnet]]). Ejemplos de estos programas son: [[HyperTerminal]], [[Xterm]], [[PuTTY]] y [[SSH]].


Con el desarrollo de los GUI, los sistemas de ventanas proveen alguna clase de emulación para el modo texto, para ejecutar correctamente programas que utilizan TUI (como el [[Midnight Commander]] de Linux). De esta forma, tanto los shells de [[Unix#Implementaciones más importantes|Unixes]] (bajo [[X Windows]]) como los antiguos programas de [[DOS]] (bajo [[MS Windows]]) son ejecutados con este emulador del modo texto. Y, lo que es aún más, algunos importantes programas (como [[Bash]]), actúan también como emuladores de terminal. De esta manera, las expresiones ''emulador de texto'', ''consola'' y ''terminal'' acaban usándose en ocasiones como sinónimos.
Con el desarrollo de los GUI, los sistemas de ventanas proveen alguna clase de emulación para el modo texto, para ejecutar correctamente programas que utilizan TUI (como el [[Midnight Commander]] de Linux). De esta forma, tanto los shells de [[Unix#Implementaciones más importantes|Unixes]] (bajo [[X Windows]]) como los antiguos programas de [[DOS]] (bajo [[MS Windows]]) son ejecutados con este emulador del modo texto. Y, lo que es aún más, algunos importantes programas (como [[Bash]]), actúan también como emuladores de terminal. De esta manera, las expresiones ''emulador de texto'', ''consola'' y ''terminal'' acaban usándose en ocasiones como sinónimos.

Revisión del 11:59 9 nov 2009

Imagen de ejemplo de una sesión Bash, tomada en Gentoo Linux.

Un intérprete de órdenes, intérprete de línea de órdenes, intérprete de comandos, terminal, consola, shell o su acrónimo en inglés CLI (por Command Line Interface) es un programa informático que actúa como interfaz de usuario para comunicar al usuario con el sistema operativo mediante pantalla completa o ventana que espera órdenes escritas por el usuario en el teclado (ej. cd directorio), los interpreta y los entrega al sistema operativo para su ejecución. La respuesta del sistema operativo se muestra al usuario en la misma ventana. A continuación, el programa shell queda esperando más instrucciones. Se interactúa con la información de la manera más sencilla posible, sin gráficas, sólo el texto crudo.

Por extensión, también se llama intérprete de comandos a algunas interfaces de programas (mayores) que comunican al usuario con el software o al cliente de un servidor como, por ejemplo, bancos de datos (MySQL, Oracle) u otros programas (openSSL, FTP), etc.

Dada la importancia de esta herramienta, existe ya desde los comienzos de la computación. Existen, para diversos sistemas operativos, para diversos hardware, y con diferente funcionalidad. Suelen incorporar características tales como control de procesos, redirección de entrada/salida, listado y lectura de ficheros, protección, comunicaciones y un lenguaje de órdenes para escribir programas por lotes o (scripts o guiones).

Su contraparte es la interfaz gráfica de usuario que ofrece una estética mejorada a costa de mayor consumo de recursos computacionales, una mayor vulnerabilidad por complejidad y, en general, una reducción en la funcionalidad ofrecida.

Historia

Máquina perforadora de tarjetas IBM. El programador debía perforar cada línea de su programa en una tarjeta y entregar el fajo de tarjetas al administrador del computador, quien lo colocaba en la entrada de datos junto a los fajos (programas) de los otros usuarios.

En los primeros años de las computadoras, durante la era de los mainframes (grandes ordenadores en tamaño aunque con capacidades de cálculo muy inferiores a los ordenadores actuales), el control de la ejecución de los programas se hacía desde lugares especiales (normalmente ubicados cerca del ordenador en salas con aire acondicionado), donde el administrador manipulaba directa y completamente la máquina.

Cuando se comenzó a ampliar el número de personas que usaban los computadores, se comenzó a usar tarjetas perforadas para hacer la máquina más accesible a los usuarios. Pero aún con ello permanecía la separación temporal entre la programación y la ejecución de un programa: desde que se iniciaba la resolución de un problema hasta el momento en que se recibía la respuesta proporcionada por el ordenador en papel pijama transcurría casi una semana.

Teletipo: se tecleaba la orden en el teclado y se recibía la respuesta impresa en papel. Para mayor rapidez se podían introducir los datos por medio de cintas perforadas (a la derecha, el lector; a la izquierda, el perforador de cintas).

Esta forma de utilizar los ordenadores fue cambiando cuando se conectaron teletipos y luego teclados con un tubo de rayos catódicos (monitores) a las computadoras. A esa combinación se le llamó terminal: cada programador se podía conectar directamente con el computador. Con ello comenzaron a aparecer programas que ofrecían, a través de órdenes, realizar operaciones que se repetían continuamente, tales como "imprimir un archivo", "listar todos los archivos", "mostrar el contenido de un archivo", etc. Debe señalarse que no existían aún normas o estándares relativos a estos aparatos periféricos y que cada terminal tenía sus propias normas de funcionamiento, en general incompatible con otras máquinas.

Esto terminó siendo reemplazado por terminales más inteligentes o conexiones de red que permitían acceso remoto, protegidos mediante contraseñas (passwords).

Tras el uso masivo de interfaces gráficas (GUI), comenzó a extenderse el uso programas que, dentro de un ambiente gráfico, emulaban una terminal en una ventana.

Como herramienta primaria de trabajo, las CLI las usan muchos programadores y administradores de sistemas, 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.

Las CLI son parte integral no variable e idénticamente importante de varias aplicaciones como interfaz alternativa y/o paralela a las GUI y AUG. En la actualidad, las líneas de órdenes permanecen como un importante (y a veces único) medio para interactuar con programas independientemente de la memoria.

Funcionamiento

Esquema de elementos involucrados en una línea de órdenes.

En su forma más simple, una CLI es una ventana que muestra un prompt, señalizando su disposición a recibir órdenes. El usuario teclea una orden en el teclado y la ingresa, habitualmente con la tecla Intro/Enter.

Las órdenes dadas a la CLI son con frecuencia de la forma:

PROMPT>comando_haz_algo [opciones] [a_estos_ficheros]

Al ingresar la orden con 'Intro', un programa interpretador de órdenes analiza la secuencia de caractéres ingresada y, si la sintaxis de la orden es correcta, ejecuta la orden, recurriendo para ello a las funciones que ofrece el sistema operativo o el programa que representa, un gestor de banco de datos, una sesión de FTP, etc. La respuesta al usuario se escribe en el monitor.

Esa forma de trabajo es interactiva, es decir, usuario y máquina se comunican en forma sucesiva.

Pero no sólo se puede trabajar interactivamente con el CLI. También es posible usar scripts, es decir, archivos con instrucciones guardadas como si se estuviesen escribiendo en el momento. De esta forma, la línea de comandos puede utilizarse sin siquiera tener que lidiar con lo primitivo del método ni estando presente frente al monitor o teclado.

Comparada con un ambiente gráfico, la CLI consume menos recursos del CPU y de la tarjeta gráfica, es más rápida y más fácil de utilizar a través de una red de computadores.


Interfaz de usuario de texto

El midnight commander es una TUI que hace uso de toda la pantalla, colores, ratón y teclas adicionales, para mayor comodidad del usuario.

Para competir con la interfaz gráfica de usuario (Graphic User Interface; "GUI", por sus siglas en inglés), algunas líneas de comando hacen uso exhaustivo de toda la pantalla, con todos los colores o tonos y posibilidades de posicionamiento que ofrece el periférico (ver, por ejemplo, los navegadores Lynx y W3m, el particionador de discos "cfdisk", etc.). El administrador de archivos Midnight Commander es un ejemplo de optimización, pues su funcionalidad no deja nada que desear comparado con un administrador de ficheros gráfico, pero sólo necesita una ventana de texto para su funcionamiento. Se ha acuñado el término interfaz de usuario de texto (text user interface; "TUI", por sus siglas en inglés), para referirse a las interfaces que usan sólo el modo texto, pero exhaustivamente, para su funcionamiento. Los programas que usan TUI pueden tener menúes, ventanas y cursores del mouse, pero todo representado con texto ASCII (para su programación en ambiente GNU/Linux, ver Ncurses). En ese sentido, CLI y TUI no es lo mismo, aunque ambos usan el mismo periférico.

Implementaciones de CLI

Es posible que un sistema operativo tenga varios intérpretes de comandos; es más, la visión lógica de un sistema operativo cambia según el intérprete de comandos usado. Ejemplo: Win32 sobre Windows o POSIX sobre LINUX.

Casi cualquier programa puede diseñarse para ofrecer al usuario alguna clase de intérprete de comandos. Por ejemplo, casi todos los juegos de PC en primera persona tienen un intérprete de comandos incorporado, conocido comúnmente como consola, utilizado para diagnóstico y labores administrativas.

Cuando se trata de un programa que interactúa con el kernel de algún 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 trae una CLI llamada Windows PowerShell, que combina características de las tradicionales shells de Unix con su framework orientado a objetos .NET.

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 script 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.

En los juegos tridimensionales o simuladores para computadora personal suele incluirse una interfaz de líneas de comandos, a veces como único medio para realizar ciertas tareas. Quake, Unreal Tournament, Ragnarok Online o Battlefield son algunos ejemplos. Generalmente en estos ambientes los comandos empiezan con "/" (barra diagonal).

Ejemplo

El comando "listar archivos", en diversos sistemas operativos:

Programa o sistema operativo Comando Tipo de programa
CMD dir Shell de Windows
Shell de UNIX ls Shell de Unix
NewShell list o dir AmigaDOS (Shell de AmigaOS/MorphOS/AROS)
Matlab dir Procesamiento matricial
Quake /dir Juego PC
TACL FILEINFO Shell de Guardian

Nomenclatura: Consolas v/s CLI v/s TUI v/s TTY v/s Terminal v/s Emulación v/s Shell

Pocos términos usados en computación han sufrido tantos avatares a lo largo del progreso técnico tan intensamente como el de intérprete de órdenes.

Históricamente, la consola era un terminal de datos (es decir, un dispositivo físico), pero como dichos aparatos ya casi no existen, la palabra pasó a utilizarse como sinónimo de "pantalla del CLI". La expresión consola se utiliza más comúnmente en juegos de PC para referirse a la ventana donde se pueden ingresar comandos.

Por otro lado, un emulador de terminal (o TTY) es un programa que permite imitar aquellos viejos terminales, para acceder a diversos servicios aún vigentes bajo ese tipo de formato (como Telnet). Ejemplos de estos programas son: HyperTerminal, Xterm, PuTTY y SSH.

Con el desarrollo de los GUI, los sistemas de ventanas proveen alguna clase de emulación para el modo texto, para ejecutar correctamente programas que utilizan TUI (como el Midnight Commander de Linux). De esta forma, tanto los shells de Unixes (bajo X Windows) como los antiguos programas de DOS (bajo MS Windows) son ejecutados con este emulador del modo texto. Y, lo que es aún más, algunos importantes programas (como Bash), actúan también como emuladores de terminal. De esta manera, las expresiones emulador de texto, consola y terminal acaban usándose en ocasiones como sinónimos.

Es común mezclar las tres cosas para referirse a un solo concepto: el sitio donde se puede usar la interfaz de líneas de comando.

Por ejemplo, si conectamos un teclado y un monitor a un PC y lo hacemos arrancar con GNU/Linux en modo texto, la mayoría de los usuarios dirá que tiene una shell. Si desde esa shell se arranca el modo gráfico KDE del mismo PC, la pantalla se iluminará con trasfondos y botones. Si se abre una ventana con el programa xterm, se le llamará consola. Si en esa consola ejecutamos SSH y nos comunicamos a través de la red con un computador remoto, diremos que tenemos un terminal abierto. En los tres casos trabajaremos con una shell, digamos Bash, y las diferencias de funcionalidad son mínimas.

La interfaz gráfica de usuario

Con el uso de monitores como periféricos y la masificación del uso de la PC, los sistemas operativos Apple (1984) y MS Windows (1985) ofrecieron a los usuarios una interfaces gráficas de usuario (GUI), con lo que lograron un rotundo éxito económico. GNU/Linux posee varias, entre ellas KDE y Gnome. Sin embargo, a pesar de la vistosa apariencia de las GUI, la CLI no ha podido ser reemplazada donde se necesita precisión, economía y versatilidad.

Véase también

Enlaces externos