Intérprete de comandos
programa informático que tiene la capacidad de traducir las órdenes que introducen los usuarios
Un intérprete de órdenes o de comandos es un programa informático que tiene la capacidad
de traducir las órdenes que introducen los usuarios, mediante un conjunto de instrucciones
facilitadas por él mismo directamente al núcleo y al conjunto de herramientas que forman el
sistema operativo.[1] Las órdenes se introducen siguiendo la sintaxis incorporada por dicho
intérprete, dentro del entorno proporcionado por el emulador de terminal, mediante un
inductor que espera a que le sean introducidos los comandos o instrucciones
PROMPT>nombrecomando argumento/s /ruta/hacia/el/o/los/ficheros
Al ingresar la orden con la tecla 'Intro', el intérprete analiza la secuencia de caracteres
ingresada y, si la sintaxis de la orden es correcta, la ejecuta, recurriendo para ello a las
funciones que ofrece el sistema operativo o el programa que representa, bien sea un gestor
de datos de banco, una sesión de FTP, de ssh, etc. La respuesta al usuario se representa en el
monitor o en forma de segundo plano. Se trabaja de manera interactiva, es decir, usuario y
máquina se comunican de forma sucesiva.[2] [3]
Incorporan 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). Uno de los intérpretes más conocidos, es el
Bourne Shell, el cual fue el intérprete usado en las primeras versiones de Unix y se convirtió
en un estándar de facto.[4]
Interfaz de línea de comandos
Evolución de las intefaces de
usuario.
CLI (Command line interface):
Interfaz de línea de comandos
GUI (Graphical user interface):
Interfaz gráfica de usuario
NUI (Natural user interface): Interfaz
natural de usuario
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 tipo de interfaz de usuario de computadora que permite a los usuarios
dar instrucciones a algún programa informático o al sistema operativo 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 se refiere al paradigma, mientras que un shell o un emulador de terminal
son programas informáticos específicos, que usualmente en conjunto implementan la CLI. 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.[5]
Funcionamiento
Esquema de elementos
involucrados en una línea de
órdenes.
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.[6]
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 invocació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.
Estos pueden anidarse ([..[..]]). Por ejemplo, la documentación de la aplicación cal de POSIX
dice que la forma de ejecutarse por medio de la CLI es:
cal [[mes] año ]
Esto significa que si se desea ver el año 2012, tendría que escribirse literalmente:
cal 2012
Ejemplos de interacción
La instrucción para listar archivos, en diversos entornos:
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
Interfaz textual de usuario
Una interfaz textual de usuario consiste en una interfaz gráfica hecha enteramente de texto.
No es lo mismo que un CLI, aunque ambos usan el mismo periférico.
Sistemas operativos
Unix y Linux
En el Bourne Shell y sus derivados como bash (utilizados ampliamente en sistemas tipo UNIX)
el prompt, generalmente, contiene el carácter $ para los usuarios sin privilegios y # para el
administrador, además de proporcionar más información. Por ejemplo: jou@home-
comp:/media/disk$ donde el usuario en uso es jou , el nombre del equipo es homecomp , y el directorio de trabajo es /media/disk.
En sistemas Unix/Linux, el prompt tiene el aspecto de:
usuario@máquina:~$
root@máquina:~#
En el primer ejemplo, "usuario" es el nombre de usuario, seguido de @ y el nombre del
ordenador ("máquina"), el símbolo virgulilla (~) que es el directorio actual y el símbolo dólar ($).
En segundo ejemplo, el usuario es el root, lo que también se nota por mostrarse almohadilla
(#) en vez del símbolo $. Pero también hay varias formas de cambiar el prompt.
DOS y Windows
En sistemas DOS y Windows, el prompt tiene el aspecto de:
C:\>
En Windows se muestra el símbolo del sistema o prompt yendo al menú de inicio y
escribiendo "CMD"
Otros programas
En el programa libre de cálculo numérico GNU Octave, o en su equivalente propietario
MATLAB, el prompt tiene el aspecto de:
>>
En Python[7] se denomina chevron Prompt y se compone de tres (3) símbolos lógicos de
comparación "mayor que" consecutivos
>>>
En R (lenguaje de programación), el prompt tiene el aspecto de:
>
Referencias
1. linux10.com.ar, ed. (2009). «Intérprete de comandos» (https://web.archive.org/web/2009
1002062405/http://www.linux10.com.ar/Glosario/terminos/interprete_de_comandos.ht
m) . Archivado desde el original (http://www.linux10.com.ar/Glosario/terminos/interpret
e_de_comandos.htm)
el 2 de octubre de 2009. Consultado el 21 de diciembre de 2009.
2. «fivem scripts» (https://justscripts.net/) . justscripts. Consultado el 6 de noviembre de
2021.
3. «FiveM MLO» (https://kingmaps.net/) . King Maps. Consultado el 6 de noviembre de
2021.
4. escomposlinux.org (ed.). «Beyond Linux From Scratch - Versión 6.0 Parte II. Configuración
posterior a LFS y Software Adicional» (http://www.escomposlinux.org/lfs-es/blfs-es-6.0/
postlfs/shells.html) . Consultado el 21 de diciembre de 2009.
5. Exposición de Alan Kay en TED 2007 (http://www.ted.com/talks/lang/eng/alan_kay_shar
es_a_powerful_idea_about_ideas.html)
Archivado (https://web.archive.org/web/200912
14002926/http://www.ted.com/talks/lang/eng/alan_kay_shares_a_powerful_idea_about_
ideas.html)
el 14 de diciembre de 2009 en Wayback Machine..
6. http://www.zdnet.com/windows-vista-tool-targeted-by-virus-writers-3039212024/
Windows Vista tool targeted by virus writers (en inglés).
7. Charles R. Severance. «Conversing with Python» (http://www.pythonlearn.com/html-00
8/cfbook002.html) . Consultado el 1 de marzo de 2015.
Enlaces externos
Wikcionario tiene definiciones y otra información sobre intérprete de comandos.
El intérprete de comandos tcsh (https://web.archive.org/web/20091214131335/http://ww
w.polinux.upv.es/drupal/node/198)
Datos: Q1368899
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )