

Una interfaz de línea de comandos ( CLI ), también conocida como shell de línea de comandos , [ 1 ] [ 2 ] es un medio para interactuar con el software mediante comandos , cada uno formateado como una línea de texto. El concepto de interactuar con una computadora mediante texto evolucionó a lo largo de dos décadas, pasando del hardware físico al software sofisticado. Antes de la CLI, las computadoras se programaban utilizando interruptores físicos o tarjetas perforadas . [ 3 ] El cambio hacia una interacción de estilo "comando" comenzó con el uso de teleimpresoras (teletipos). Los primeros sistemas, como el Whirlwind I (1951) del MIT, comenzaron a utilizar entradas similares a las de una máquina de escribir para el control directo, alejándose del procesamiento por lotes en el que se entregaba una pila de tarjetas a un operador y se esperaban horas para obtener un resultado. [ 4 ] Dispositivos como el Teletipo Modelo 33 , presentado en 1963, permitían a los operadores escribir un comando y recibir una respuesta impresa de la computadora. [ 5 ]
El intérprete de línea de comandos surgió cuando las computadoras alcanzaron la potencia suficiente para gestionar múltiples usuarios simultáneamente, lo que se conoce como tiempo compartido. El Sistema de Tiempo Compartido Compatible (CTSS), desarrollado en 1961 en el MIT, introdujo el primer intérprete de línea de comandos propiamente dicho . Por primera vez, un usuario podía escribir un comando como LOGIN o PRINT, y un programa específico (el supervisor) analizaba ese texto y ejecutaba la función correspondiente. En 1964, Louis Pouzin introdujo el software que hoy conocemos como "shell" para el sistema operativo Multics, proporcionando un entorno programable para la ejecución de scripts. Muchos sistemas operativos y utilidades de desarrollo de software ofrecen interfaces de línea de comandos (CLI).
Muchas interfaces de línea de comandos (CLI) permiten automatizar programas, ya que los comandos se pueden almacenar en un archivo de script que se puede usar repetidamente. Un script permite que los comandos que contiene se ejecuten en conjunto (como un solo programa).
Entre las alternativas a la interfaz de línea de comandos (CLI) se incluyen una interfaz gráfica de usuario (GUI, por sus siglas en inglés) (como la metáfora del escritorio , por ejemplo, Windows ), menús basados en texto (como DOS Shell e IBM AIX SMIT ) y atajos de teclado .
Comparación con las interfaces gráficas de usuario

En comparación con una interfaz gráfica de usuario, una interfaz de línea de comandos requiere menos recursos del sistema para su implementación. Dado que las opciones de los comandos se especifican con pocos caracteres en cada línea, un usuario experimentado suele encontrarlas más fáciles de acceder. La automatización de tareas repetitivas se simplifica mediante la edición de líneas y mecanismos de historial para almacenar secuencias de uso frecuente; esto puede extenderse a un lenguaje de scripting que admita parámetros y opciones variables. Se puede mantener un historial de la línea de comandos, lo que permite revisar o repetir comandos.
Un sistema de línea de comandos puede requerir manuales impresos o en línea para la consulta del usuario, aunque a menudo la opción de ayuda ofrece un resumen conciso de las opciones de un comando. El entorno de línea de comandos puede carecer de mejoras gráficas como fuentes diferentes o ventanas de edición extendidas, como las que se encuentran en una interfaz gráfica de usuario (GUI). Para un usuario nuevo, puede resultar difícil familiarizarse con todos los comandos y opciones disponibles, en comparación con los iconos y menús desplegables de una interfaz gráfica, sin consultar los manuales.
Tipos
Interfaces de línea de comandos del sistema operativo
Las interfaces de línea de comandos del sistema operativo (SO) suelen ser programas independientes que se suministran con el sistema operativo. Un programa que implementa dicha interfaz de texto se suele denominar intérprete de línea de comandos, procesador de comandos o shell .
Ejemplos de intérpretes de línea de comandos son Nushell , el lenguaje de comandos DIGITAL (DCL) de DEC en OpenVMS y RSX-11 , los diversos shells de Unix ( sh , ksh , csh , tcsh , zsh , Bash , etc.), CCP de CP/M , COMMAND.COM de DOS , así como los programas CMD.EXE de OS/2 y Windows , estos últimos basados en gran medida en los CLI RSX-11 y RSTS de DEC . En la mayoría de los sistemas operativos, es posible reemplazar el programa shell predeterminado con alternativas; algunos ejemplos son 4DOS para DOS, 4OS2 para OS/2 y 4NT/Take Command para Windows.
Aunque el término shell se usa a menudo para describir un intérprete de línea de comandos, estrictamente hablando, un shell es un intérprete y procesador de comandos y, por extensión, un programa que proporciona una interfaz (ya sea una interfaz de usuario (interfaz de línea de comandos, GUI, etc.) o una interfaz de programación) a un intérprete y procesador de comandos y a las amplias capacidades del sistema operativo. Por ejemplo, la GUI predeterminada de Windows es una GUI de shell llamada EXPLORER.EXE , tal como se define en la línea SHELL=EXPLORER.EXE del archivo de configuración WIN.INI. Este programa, estrictamente hablando, es una GUI de shell y, por extensión, un shell (estrictamente hablando, el shell de Windows es shell32.dll, no explorer.exe, que es una GUI de shell para shell32.dll), pero no es un CLI (intérprete de línea de comandos) ni una CLI de shell (interfaz de línea de comandos de shell).
Interfaces de línea de comandos de la aplicación

Los programas de aplicación (a diferencia de los sistemas operativos) también pueden tener interfaces de línea de comandos.
Un programa de aplicación puede no ser compatible con ninguno, con alguno o con todos estos tres tipos principales de mecanismos de interfaz de línea de comandos:
- Parámetros : La mayoría de las interfaces de línea de comandos admiten un medio para pasar información adicional a un programa cuando se inicia.
- Sesiones interactivas de línea de comandos : Después de su ejecución, un programa puede proporcionar al operador un medio independiente para introducir comandos.
- Comunicación entre procesos : La mayoría de los sistemas operativos admiten mecanismos de comunicación entre procesos (por ejemplo, flujos estándar o tuberías con nombre ). Las líneas de comando de los procesos cliente pueden redirigirse a un programa de línea de comandos mediante alguno de estos métodos.
Algunas aplicaciones admiten una interfaz de línea de comandos (CLI), presentando su propio indicador al usuario y aceptando líneas de comando. Otros programas admiten tanto una CLI como una interfaz gráfica de usuario (GUI). En algunos casos, una GUI es simplemente una interfaz que envuelve un archivo ejecutable de CLI independiente . En otros casos, un programa puede proporcionar una CLI como alternativa opcional a su GUI. Las CLI y las GUI suelen admitir funcionalidades diferentes. Por ejemplo, todas las funciones de MATLAB , un programa informático de análisis numérico , están disponibles a través de la CLI, mientras que la GUI de MATLAB solo expone un subconjunto de funciones.
En Colossal Cave Adventure, de 1975, el usuario utiliza una interfaz de línea de comandos para introducir una o dos palabras y explorar un sistema de cuevas.
Historia
La interfaz de línea de comandos evolucionó a partir de una forma de comunicación que se realizaba mediante máquinas de teleimpresión (TTY). En ocasiones, esto implicaba el envío de una orden o una confirmación mediante télex . Los primeros sistemas informáticos solían utilizar una teleimpresora para interactuar con un operador.
El teletipo mecánico fue reemplazado por un "tty de cristal" , un teclado y pantalla que emulaba el teletipo. Los terminales "inteligentes" permitían funciones adicionales, como el movimiento del cursor por toda la pantalla o la edición local de datos en el terminal para su transmisión al ordenador. A medida que la revolución de los microordenadores reemplazó la arquitectura tradicional de tiempo compartido ( miniordenador + terminales ) , los terminales de hardware fueron reemplazados por emuladores de terminales : software para PC que interpretaba las señales de terminal enviadas a través de los puertos serie del PC . Estos se utilizaban normalmente para conectar los nuevos PC de una organización con sus miniordenadores o mainframes existentes, o para conectar PC con PC. Algunos de estos PC ejecutaban software de sistema de tablón de anuncios (Bulletin Board System) .
Las primeras interfaces de línea de comandos (CLI) de los sistemas operativos se implementaron como parte de programas de monitorización residentes y no se podían reemplazar fácilmente. La primera implementación del shell como un componente reemplazable formó parte del sistema operativo de tiempo compartido Multics . [ 6 ] En 1964, Louis Pouzin, miembro del personal del Centro de Computación del MIT, desarrolló la herramienta RUNCOM para ejecutar scripts de comandos permitiendo la sustitución de argumentos. [ 7 ] Pouzin acuñó el término shell para describir la técnica de usar comandos como un lenguaje de programación y escribió un artículo sobre cómo implementar la idea en el sistema operativo Multics . [ 8 ] Pouzin regresó a su Francia natal en 1965, y Glenda Schroeder desarrolló el primer shell de Multics . [ 7 ]

El primer intérprete de comandos de Unix , el intérprete V6 , fue desarrollado por Ken Thompson en 1971 en Bell Labs y se basó en el intérprete Multics de Schroeder. [ 9 ] [ 10 ] El intérprete Bourne se introdujo en 1977 como reemplazo del intérprete V6. Aunque se utiliza como intérprete de comandos interactivo, también se concibió como un lenguaje de scripting y contiene la mayoría de las características que se consideran comúnmente para producir programas estructurados. El intérprete Bourne dio lugar al desarrollo de KornShell (ksh), el intérprete Almquist (ash) y el popular intérprete Bourne-again (o Bash). [ 10 ]
Los primeros microordenadores se basaban en una interfaz de línea de comandos como CP/M , DOS o AppleSoft BASIC . Durante las décadas de 1980 y 1990, la introducción del Apple Macintosh y de Microsoft Windows en los PC hizo que la interfaz de línea de comandos, como interfaz de usuario principal, fuera reemplazada por la interfaz gráfica de usuario . [ 11 ] La línea de comandos siguió estando disponible como una interfaz de usuario alternativa, utilizada frecuentemente por administradores de sistemas y otros usuarios avanzados para la administración de sistemas, la programación informática y el procesamiento por lotes .
En noviembre de 2006, Microsoft lanzó la versión 1.0 de Windows PowerShell (anteriormente conocida como Monad ), que combinaba características de los shells tradicionales de Unix con su framework .NET Framework , orientado a objetos y de código abierto . MinGW y Cygwin son paquetes de código abierto para Windows que ofrecen una interfaz de línea de comandos similar a la de Unix. Microsoft proporciona la implementación de ksh de MKS Inc. , MKS Korn shell para Windows, a través de su complemento Services for UNIX .
Desde 2001, el sistema operativo Macintosh macOS se basa en un sistema operativo tipo Unix llamado Darwin . [ 12 ] En estos ordenadores, los usuarios pueden acceder a una interfaz de línea de comandos tipo Unix ejecutando el programa emulador de terminal llamado Terminal , que se encuentra en la subcarpeta Utilidades de la carpeta Aplicaciones, o iniciando sesión remotamente en la máquina usando ssh . Z shell es el shell predeterminado para macOS; también se proporcionan Bash, tcsh y KornShell . Antes de macOS Catalina , Bash era el predeterminado.
Uso
Una CLI se utiliza cuando un amplio vocabulario de comandos o consultas, junto con una amplia (o arbitraria) gama de opciones, puede introducirse más rápidamente como texto que con una GUI pura. Este es el caso típico de los intérpretes de comandos de los sistemas operativos . Las CLI también se utilizan en sistemas con recursos insuficientes para soportar una interfaz gráfica de usuario. Algunos sistemas de lenguajes de programación (como Python , [ 13 ] Forth , LISP , Rexx y muchos dialectos de BASIC ) proporcionan un modo de línea de comandos interactivo para permitir una evaluación rápida del código.
Las CLI son utilizadas frecuentemente por programadores y administradores de sistemas, en entornos de ingeniería y científicos, y por usuarios de computadoras personales con conocimientos técnicos avanzados. [ 14 ] Las CLI también son populares entre las personas con discapacidades visuales, ya que los comandos y las respuestas pueden mostrarse mediante pantallas Braille actualizables .
Anatomía de una interfaz de línea de comandos (CLI) de shell
El patrón general de una línea de comandos es: [ 15 ] [ 16 ]
comando de solicitud parámetro1 parámetro2 parámetro3 … parámetroN
- Mensaje : señal que muestra el programa para indicar que está listo para recibir información; un mensaje puede incluir información contextual y a menudo termina con un símbolo que proporciona una señal visual de que se espera una entrada.
- comando — introducido por el usuario, un comando suele ser de una de dos clases:
- Los comandos internos son reconocidos y procesados por el intérprete de la línea de comandos. Los comandos internos también se denominan comandos integrados. [ 17 ]
- Los comandos externos ejecutan archivos ejecutables que se encuentran en archivos ejecutables separados. El intérprete de la línea de comandos busca archivos ejecutables cuyos nombres coincidan con el comando externo. [ 18 ] [ 19 ]
- param1 …paramN — parámetros proporcionados por el usuario. El formato y el significado de los parámetros dependen del comando. En el caso de comandos externos, los valores de los parámetros se envían al programa cuando este se inicia desde el sistema operativo. Los parámetros pueden ser argumentos u opciones .
En este formato, los delimitadores entre los elementos de la línea de comandos son espacios en blanco y el delimitador de fin de línea es el salto de línea . Esta es una convención muy utilizada (aunque no universal).
Una interfaz de línea de comandos generalmente se compone de sintaxis y semántica . La sintaxis es la gramática que deben seguir todos los comandos. En el caso de los sistemas operativos , DOS y Unix definen cada uno su propio conjunto de reglas que todos los comandos deben cumplir. En el caso de los sistemas embebidos , cada proveedor, como Nortel , Juniper Networks o Cisco Systems , define su propio conjunto de reglas propietarias. Estas reglas también dictan cómo un usuario navega por el sistema de comandos. La semántica define qué tipo de operaciones son posibles, sobre qué tipo de datos se pueden realizar estas operaciones y cómo la gramática representa estas operaciones y datos: el significado simbólico en la sintaxis.
Dos interfaces de línea de comandos (CLI) diferentes pueden coincidir en la sintaxis o la semántica, pero solo cuando coinciden en ambas pueden considerarse lo suficientemente similares como para permitir a los usuarios utilizar ambas CLI sin necesidad de aprender nada nuevo, así como para posibilitar la reutilización de scripts.
Una interfaz de línea de comandos (CLI) sencilla mostrará un mensaje, aceptará la línea de comandos escrita por el usuario y finalizada con la tecla Intro , ejecutará el comando especificado y mostrará los resultados o mensajes de error en formato de texto. Las CLI avanzadas validarán, interpretarán y expandirán los parámetros de la línea de comandos antes de ejecutar el comando especificado, y opcionalmente capturarán o redirigirán su salida.
A diferencia de un botón o un elemento de menú en una interfaz gráfica de usuario (GUI), una línea de comandos suele ser autoexplicativa, [ 20 ] indicando exactamente lo que el usuario desea hacer. Además, las líneas de comandos generalmente incluyen muchos valores predeterminados que se pueden modificar para personalizar los resultados. Las líneas de comandos útiles se pueden guardar asignándoles una cadena de caracteres o un alias para representar el comando completo, o bien se pueden agrupar varios comandos para realizar una secuencia más compleja (por ejemplo, compilar el programa, instalarlo y ejecutarlo ), creando una única entidad, denominada procedimiento de comandos o script, que a su vez puede tratarse como un comando. Estas ventajas implican que el usuario solo tiene que averiguar un comando complejo o una serie de comandos una vez, ya que se pueden guardar para su posterior uso.
Los comandos que se le dan a una consola de línea de comandos suelen tener una de las siguientes formas:
doSomething how toFilesdoSomething how sourceFile destinationFiledoSomething how < inputFile > outputFiledoSomething how | doSomething how | doSomething how > outputFile
donde doSomething es, en efecto, un verbo , how un adverbio (por ejemplo, si el comando debe ejecutarse de forma detallada o silenciosa ) y toFiles un objeto u objetos (normalmente uno o más archivos) sobre los que debe actuar el comando. En >el tercer ejemplo, es un operador de redirección que le indica al intérprete de la línea de comandos que envíe la salida del comando no a su propia salida estándar (la pantalla), sino al archivo especificado. Esto sobrescribirá el archivo. Usar redirigirá la salida y la agregará al archivo. Otro operador de redirección es la barra vertical ( ), que crea una tubería donde la salida de un comando se convierte en la entrada del siguiente. [ 21 ]>>|
CLI y protección de recursos
En algunos sistemas, como los sistemas tipo Unix o Windows, se puede modificar el conjunto de comandos disponibles cambiando las rutas que aparecen en la variable de entorno PATH o su equivalente. En los sistemas tipo Unix, el archivo que contiene el ejecutable o script de un comando también necesita tener permisos de ejecución . Los directorios en la variable PATH se buscan en el orden en que se especifican. Al reordenar la ruta, se puede ejecutar, por ejemplo , \OS2\MDOS\E.EXEen lugar de \OS2\E.EXE, cuando el valor predeterminado es el contrario. También funciona renombrar los ejecutables: por ejemplo, la gente suele renombrar su editor favorito a EDIT.
La línea de comandos permite restringir los comandos disponibles, como el acceso a comandos internos avanzados. El intérprete de comandos Bourne y otros similares, como Bash, pueden ejecutarse como un intérprete restringido ; entre otras cosas, esto impide al usuario modificar la variable de entorno PATH, de modo que si PATH está configurado para incluir solo directorios que contienen comandos permitidos, el usuario solo podrá ejecutar esos comandos. El comando CMD.EXE de Windows también admite la restricción de comandos disponibles. A menudo, los programas shareware limitan el rango de comandos, incluyendo la impresión del mensaje "su administrador ha deshabilitado la ejecución de archivos por lotes" desde la línea de comandos.
Algunas interfaces de línea de comandos (CLI), como las de los enrutadores de red , tienen una jerarquía de modos , con un conjunto diferente de comandos compatibles en cada modo. El conjunto de comandos se agrupa según su asociación con seguridad, sistema, interfaz, etc. En estos sistemas, el usuario puede navegar a través de una serie de submodos. Por ejemplo, si la CLI tuviera dos modos llamados interfaz y sistema , el usuario podría usar el comando ` interface` para acceder al modo interfaz. En este punto, los comandos del modo sistema podrían no estar disponibles hasta que el usuario salga del modo interfaz y entre en el modo sistema.
En los sistemas operativos MVS de IBM , la función Authorised Program Facility ( APF ) permite que ciertos programas autorizados se ejecuten con privilegios mejorados, de forma análoga a UID(0) en sistemas tipo Unix. TSO/E admite la llamada a comandos autorizados, pero solo para aquellos comandos, programas y servicios incluidos en una lista controlada por la instalación.
Símbolo del sistema

Un indicador de comandos (o simplemente indicador ) es una secuencia de (uno o más) caracteres que se utiliza en una interfaz de línea de comandos para indicar que está listo para aceptar comandos. Literalmente, le pide al usuario que realice una acción. Un indicador generalmente termina con uno de los caracteres $, %, #, [ 22 ] [ 23 ]: , >o [ 24 ] y a menudo incluye otra información, como la ruta del directorio de trabajo actual y el nombre de host .-
En muchos sistemas Unix y derivados , el indicador de comandos suele terminar en o si el usuario es un usuario normal, pero en si el usuario es un superusuario ("root" en la terminología de Unix).$%#
Los usuarios finales suelen poder modificar los mensajes de la línea de comandos. Según el entorno, pueden incluir colores, caracteres especiales y otros elementos (como variables y funciones para la hora actual, el usuario, el número de shell o el directorio de trabajo) para, por ejemplo, hacer que el mensaje sea más informativo o visualmente atractivo, distinguir sesiones en diferentes máquinas o indicar el nivel actual de anidamiento de comandos. En algunos sistemas, se pueden usar tokens especiales en la definición del mensaje para que el intérprete de la línea de comandos llame a programas externos mientras se muestra el mensaje.
En COMMAND.COM de DOS y en cmd.exe de Windows NT, los usuarios pueden modificar el indicador emitiendo un PROMPTcomando o cambiando directamente el valor de la %PROMPT%variable de entorno correspondiente . El C:\>estilo predeterminado de la mayoría de los sistemas modernos se obtiene, por ejemplo, con PROMPT $P$G. El estilo predeterminado de los sistemas DOS más antiguos C>se obtiene simplemente con PROMPT, aunque en algunos sistemas esto produce el C:\>estilo más nuevo, a menos que se use en las unidades de disquete A: o B:; en esos sistemas PROMPT $N$Gse puede usar para anular el valor predeterminado automático y cambiar explícitamente al estilo anterior.
Muchos sistemas Unix incluyen la $PS1variable (Cadena de solicitud 1), [ 25 ] aunque otras variables también pueden afectar la solicitud (dependiendo del intérprete de comandos utilizado). En el intérprete de comandos Bash, una solicitud de la forma:
[ tiempo ] usuario@host: directorio_de_trabajo $ podría configurarse emitiendo el comando
export PS1 = '[\t] \u@\H: \W $'En zsh, la $RPROMPTvariable controla un indicador opcional en el lado derecho de la pantalla. No se trata de un indicador propiamente dicho, ya que la ubicación del texto no cambia. Se utiliza para mostrar información en la misma línea que el indicador, pero alineada a la derecha.
En RISC OS, el indicador de comandos es un *símbolo, y por lo tanto, los comandos CLI (del sistema operativo) a menudo se denominan comandos estrella . [ 26 ] También se puede acceder a los mismos comandos desde otras líneas de comandos (como la línea de comandos de BBC BASIC ), anteponiendo un punto al comando *.
En TSO de IBM , el indicador de comandos se denomina indicador READY, después de la palabra que aparece READYen el indicador.
Algunos intérpretes de comandos, como Bash, zsh y PowerShell, permiten el uso de sistemas de solicitud de información que muestran mucha más información en la línea de comandos, como el tipo de conexión remota, el estado de los sensores de la máquina o información adicional sobre un sistema de control de versiones . Suelen utilizar varios colores ANSI , caracteres Unicode y funciones avanzadas del intérprete para configurar una visualización colorida.
Argumentos

Un argumento o parámetro de línea de comandos es un elemento de información que se proporciona a un programa cuando se inicia. [ 27 ] Un programa puede tener muchos argumentos de línea de comandos que identifican fuentes o destinos de información, o que alteran el funcionamiento del programa.
Cuando un procesador de comandos está activo, normalmente se invoca un programa escribiendo su nombre seguido de los argumentos de la línea de comandos (si los hay). Por ejemplo, en entornos Unix y similares , un ejemplo de argumento de línea de comandos es:
rm archivo.s file.ses un argumento de línea de comandos que le indica al programa rm que elimine el archivo llamado file.s.
Algunos lenguajes de programación, como C , C++ y Java , permiten que un programa interprete los argumentos de la línea de comandos tratándolos como parámetros de cadena en la función principal . [ 28 ] [ 29 ] Otros lenguajes, como Python , exponen API (funcionalidad) específicas del sistema operativo a través del sysmódulo , [ 30 ] y en particular sys.argvpara los argumentos de la línea de comandos .
En los sistemas operativos tipo Unix , un solo guion utilizado en lugar de un nombre de archivo es un valor especial que especifica que un programa debe manejar datos provenientes de la entrada estándar o enviar datos a la salida estándar .
Opción de línea de comandos
Una opción de línea de comandos, o simplemente opción (también conocida como indicador o interruptor ), modifica el funcionamiento de un comando; el efecto lo determina el programa que ejecuta el comando. Las opciones siguen al nombre del comando en la línea de comandos, separadas por, por ejemplo, comas o espacios. No siempre se requieren separadores, como Dir/?en DIR /?DOS, que tienen el mismo efecto [ 24 ] de mostrar las opciones disponibles del comando DIR, mientras que dir --help(en muchas versiones de Unix) requiere que la opción esté precedida por al menos un espacio (y distingue entre mayúsculas y minúsculas).
El formato de las opciones varía mucho entre los sistemas operativos. En la mayoría de los casos, la sintaxis se basa en convenciones más que en requisitos del sistema operativo; la línea de comandos completa es simplemente una cadena que se pasa a un programa, el cual puede procesarla como el programador desee, siempre y cuando el intérprete pueda determinar dónde termina el nombre del comando y dónde comienzan sus argumentos y opciones.
Algunos ejemplos representativos de opciones de línea de comandos, la mayoría relacionadas con la visualización de archivos en un directorio, para ilustrar algunas convenciones:
El análisis de argumentos de línea de comandos se utiliza para analizar los argumentos de un programa, y esta funcionalidad está disponible en varios lenguajes. Por ejemplo, la función getopt() se encuentra en la biblioteca POSIX de C para analizar argumentos.
Abreviar comandos
En Multics , las opciones de línea de comandos y las palabras clave del subsistema pueden abreviarse. Esta idea parece derivar del lenguaje de programación PL/I , con sus palabras clave abreviadas (por ejemplo, STRG para STRINGRANGE y DCL para DECLARE). Por ejemplo, en el subsistema del foro de Multics , el parámetro -long_subject puede abreviarse como -lgsj . También es común que los comandos de Multics se abrevien, generalmente con las letras iniciales de las palabras que se unen con guiones bajos para formar los nombres de los comandos, como el uso de did para delete_iacl_dir .
En algunos otros sistemas, las abreviaturas son automáticas, como permitir que los primeros caracteres de un nombre de comando sean suficientes para identificarlo de forma única (como SUuna abreviatura de SUPERUSER), mientras que otros pueden tener algunas abreviaturas específicas preprogramadas (por ejemplo, MDpara MKDIRen COMMAND.COM) o definidas por el usuario a través de scripts por lotes y alias (por ejemplo, alias md mkdiren tcsh ).
Convenciones de opciones en DOS, Windows y OS/2
En DOS, OS/2 y Windows, diferentes programas llamados desde su COMMAND.COM o CMD.EXE (o internamente sus comandos) pueden usar sintaxis diferentes dentro del mismo sistema operativo. Por ejemplo:
- Las opciones pueden indicarse mediante cualquiera de los caracteres de interruptor :
/,-, o bien se permite cualquiera de ellos. Véase más abajo. - Pueden o no distinguir entre mayúsculas y minúsculas .
- A veces las opciones y sus argumentos se escriben juntos, a veces separados por espacios en blanco y a veces por un carácter, normalmente
:o=; por lo tantoProg -fFilename,Prog -f Filename,Prog -f:Filename,Prog -f=Filename. - Algunos programas permiten combinar opciones de un solo carácter; [ 24 ] otros no. El interruptor
-fApuede significar lo mismo que-f -A, [ 24 ] o puede ser incorrecto, o incluso puede ser un parámetro válido pero diferente.
En DOS , OS/2 y Windows , la barra inclinada ( /) es la más frecuente, aunque el guion-menos también se usa a veces. En muchas versiones de DOS (MS-DOS/PC DOS 2.xx y superior, todas las versiones de DR-DOS desde 5.0, así como PTS-DOS , Embedded DOS , FreeDOS y RxDOS ) el carácter de conmutación (a veces abreviado switchar o switchchar ) que se va a usar se define por un valor devuelto por una llamada al sistema ( INT 21h /AX=3700h ). El carácter predeterminado devuelto por esta API es /, pero se puede cambiar a un guion-menos en los sistemas mencionados anteriormente, excepto en Datalight ROM-DOS y MS-DOS/PC DOS 5.0 y superior, que siempre devuelven /de esta llamada (a menos que se cargue uno de los muchos TSR disponibles para volver a habilitar la función SwitChar). En algunos de estos sistemas (MS-DOS/PC DOS 2.xx, DOS Plus 2.1, DR-DOS 7.02 y superior, PTS-DOS, Embedded DOS, FreeDOS y RxDOS), la configuración también puede preconfigurarse mediante una directiva SWITCHAR en CONFIG.SYS . Embedded DOS de General Software proporciona un comando SWITCH para el mismo propósito, mientras que 4DOS permite cambiar la configuración a través de SETDOS /W:n. [ 31 ] En DR-DOS, si la configuración se ha cambiado de /, el primer separador de directorio \en la visualización del parámetro PROMPT$G cambiará a una barra inclinada hacia adelante /(que también es un separador de directorio válido en DOS, FlexOS, 4680 OS, 4690 OS, OS/2 y Windows) sirviendo así como una pista visual para indicar el cambio. [ 24 ] Además, la configuración actual también se refleja en las pantallas de ayuda integradas. [ 24 ] Algunas versiones de DR-DOS COMMAND.COM también admiten un token PROMPT $/para mostrar la configuración actual. COMMAND.COM desde DR-DOS 7.02 también proporciona una variable de entorno pseudo denominada %/%para permitir la escritura de trabajos por lotes portátiles. [ 32 ] [ 33 ] Varios comandos externos de DR-DOS admiten adicionalmente una variable de entorno%SWITCHAR% para anular la configuración del sistema.
Sin embargo, muchos programas están programados para usar /solo, en lugar de recuperar la configuración del interruptor antes de analizar los argumentos de la línea de comandos. Un número muy pequeño, principalmente puertos de sistemas tipo Unix, están programados para aceptar -incluso si el carácter del interruptor no está configurado en él (por ejemplo , netstaty ping, suministrados con Microsoft Windows , aceptarán la opción /? para listar las opciones disponibles, y aun así la lista especificará la -convención).
Convenciones de opciones en sistemas tipo Unix
En los sistemas tipo Unix , el guion-menos ASCII inicia las opciones; la convención nueva (y de GNU ) es usar dos guiones seguidos de una palabra (p. ej. --create) para identificar el uso de la opción, mientras que la convención antigua (y aún disponible como opción para opciones de uso frecuente) es usar un guion seguido de una letra (p. ej., -c); si un guion va seguido de dos o más letras, puede significar que se están especificando dos opciones, o puede significar que la segunda y las siguientes letras son un parámetro (como nombre de archivo o fecha) para la primera opción. [ 34 ]
Dos guiones sin letras siguientes ( --) pueden indicar que los argumentos restantes no deben tratarse como opciones, lo cual es útil, por ejemplo, si el nombre de un archivo comienza con un guion, o si se pretenden argumentos adicionales para un comando interno (por ejemplo, sudo ). Los guiones dobles también se utilizan a veces como prefijo para opciones largas cuando se utilizan nombres de opciones más descriptivos. Esta es una característica común del software GNU . La función y el programa getopt , y el comando getopts se utilizan habitualmente para analizar las opciones de la línea de comandos.
Los nombres de los comandos, los argumentos y las opciones de Unix distinguen entre mayúsculas y minúsculas (salvo en algunos ejemplos, principalmente cuando se han adaptado a Unix comandos populares de otros sistemas operativos).
Convenciones de opciones en otros sistemas
Uso de FlexOS , 4680 OS y 4690 OS- .
CP/M se utiliza normalmente [.
El Sistema de Monitoreo Conversacional (CMS) utiliza un paréntesis izquierdo para separar las opciones al final del comando de los demás argumentos. Por ejemplo, en el siguiente comando, las opciones indican que el archivo de destino debe reemplazarse si existe, y que la fecha y la hora del archivo de origen deben conservarse en la copia: COPY source file a target file b (REPLACE OLDDATE)
Los comandos del operador OS/360 utilizan una lista de parámetros posicionales y de palabras clave separados por comas; solo son válidas las abreviaturas de comandos y palabras clave documentadas. Los valores de las palabras clave se separan de las palabras clave con signos de igual.
Los comandos TSO utilizan una lista de parámetros posicionales y de palabras clave separados por espacios; las palabras clave pueden truncarse a cualquier subcadena única. Solo son válidas las abreviaturas de comandos documentadas. Los valores de las palabras clave se encuentran entre paréntesis.
La CLI de Data General bajo sus sistemas operativos RDOS , AOS , etc., así como la versión de CLI que venía con su Business Basic , usa solo /como carácter de interruptor, no distingue entre mayúsculas y minúsculas, y permite interruptores locales en algunos argumentos para controlar la forma en que se interpretan, como MAC/U LIB/S A B C $LPT/Ltiene la opción global Ual comando del ensamblador de macros para agregar símbolos de usuario, pero dos interruptores locales, uno para especificar que LIB debe omitirse en el paso 2 y el otro para dirigir la lista a la impresora, $LPT.
Ayuda de uso integrada
Una de las críticas a una CLI es la falta de indicaciones para el usuario sobre las acciones disponibles. [ 35 ] En contraste, las GUI suelen informar al usuario sobre las acciones disponibles con menús, iconos u otras indicaciones visuales. [ 36 ] Para superar esta limitación, muchos programas CLI muestran un mensaje de uso , normalmente cuando se invocan sin argumentos o con uno de los siguientes : ?, -?, -h, -H, /?, /h, /H, /Help, -help, o --help. [ 24 ] [ 37 ] [ 38 ]
Sin embargo, introducir el nombre de un programa sin parámetros con la esperanza de que muestre la ayuda de uso puede ser peligroso, ya que los programas y scripts para los que los argumentos de la línea de comandos son opcionales se ejecutarán sin previo aviso.
Aunque deseable al menos para el parámetro de ayuda, es posible que los programas no admitan todos los caracteres de introducción de opciones ejemplificados anteriormente. En DOS, donde el carácter de opción de línea de comandos predeterminado se puede cambiar de /a -, los programas pueden consultar la API SwitChar para determinar la configuración actual. Por lo tanto, si un programa no está programado para admitirlos todos, un usuario puede necesitar conocer la configuración actual incluso para poder solicitar ayuda de forma fiable. Si el SwitChar se ha cambiado a -y, por lo tanto, el /carácter se acepta como un delimitador de ruta alternativo en la línea de comandos de DOS, los programas podrían interpretar erróneamente opciones como /ho /Hcomo rutas en lugar de parámetros de ayuda. [ 24 ] Sin embargo, si se proporciona como el primer o único parámetro, la mayoría de los programas de DOS, por convención , lo aceptarán como una solicitud de ayuda independientemente de la configuración actual de SwitChar. [ 24 ] [ 31 ]
En algunos casos, se pueden seleccionar diferentes niveles de ayuda para un programa. Algunos programas que admiten esto permiten especificar un nivel de verbosidad como argumento opcional del parámetro de ayuda (como en /H:1, /H:2, etc.) o bien proporcionan una ayuda breve sobre los parámetros de ayuda con signo de interrogación y una pantalla de ayuda más extensa para las demás opciones de ayuda. [ 39 ]
Dependiendo del programa, a veces se puede obtener ayuda adicional o más específica sobre los parámetros aceptados proporcionando el parámetro en cuestión como argumento del parámetro de ayuda o viceversa (como en /H:Wo en /W:?(suponiendo /Wque sería otro parámetro compatible con el programa)). [ 40 ] [ 41 ] [ 38 ] [ 37 ] [ 39 ] [ nb 1 ]
De manera similar al parámetro help, pero mucho menos común, algunos programas proporcionan información adicional sobre sí mismos (como modo, estado, versión, autor, licencia o información de contacto) cuando se invocan con un parámetro about-! como , /!, -about, o --about. [ 37 ]
Dado que los caracteres ?y !normalmente también cumplen otras funciones en la línea de comandos, es posible que no estén disponibles en todos los escenarios, por lo tanto, no deberían ser las únicas opciones para acceder a la información de ayuda correspondiente.

Si se necesita una ayuda más detallada que la que proporciona la ayuda interna integrada del programa, muchos sistemas admiten un comando externo específico (o similar), que acepta un nombre de comando como parámetro de llamada e invoca un sistema de ayuda externo.helpcommand
En la familia DR-DOS, escribir /?o /Hen el indicador COMMAND.COM en lugar de un comando mostrará una lista generada dinámicamente de comandos internos disponibles; [ 24 ] 4DOS y NDOS admiten la misma función escribiendo ?en el indicador [ 31 ] (que también es aceptado por versiones más recientes de DR-DOS COMMAND.COM); los comandos internos se pueden deshabilitar o volver a habilitar individualmente a través de SETDOS /I. [ 31 ] Además de esto, algunas versiones más recientes de DR-DOS COMMAND.COM también aceptan un comando para mostrar una lista de variables de entorno pseudo-?% integradas disponibles . Además de su propósito como referencia de ayuda rápida, esto se puede usar en trabajos por lotes para consultar las funciones del procesador de línea de comandos subyacente. [ 24 ]
Sintaxis de la descripción del comando
La ayuda de uso integrada y las páginas man suelen emplear una sintaxis pequeña para describir la forma válida del comando: [ 42 ] [ 43 ] [ 44 ] [ nb 2 ]
- Corchetes angulares para los parámetros requeridos :
ping <hostname> - Corchetes para parámetros opcionales :
mkdir [-p] <dirname> - puntos suspensivos para elementos repetidos :
cp <source1> [source2…] <dest> - barras verticales para la selección de artículos:
netstat {-t|-u}
Tenga en cuenta que estos caracteres tienen significados diferentes a cuando se usan directamente en la consola. Los corchetes angulares pueden omitirse cuando no es probable que se confunda el nombre del parámetro con una cadena literal.
El personaje espacial
En muchas áreas de la informática, pero particularmente en la línea de comandos, el espacio puede causar problemas, ya que tiene dos funciones distintas e incompatibles: como parte de un comando o parámetro, o como separador de parámetros o nombres . La ambigüedad se puede evitar prohibiendo los espacios incrustados en los nombres de archivos y directorios (por ejemplo, sustituyéndolos por guiones bajos_ ), o encerrando un nombre con espacios incrustados entre comillas o utilizando un carácter de escape antes del espacio, generalmente una barra invertida ( \). Por ejemplo
Long path/Long program name Parameter one Parameter two…
es ambiguo (¿ el nombre del programa forma parte del nombre del programa o son dos parámetros?); sin embargo
Long_path/Long_program_name Parameter_one Parameter_two…,LongPath/LongProgramName ParameterOne ParameterTwo…,"Long path/Long program name" "Parameter one" "Parameter two"…
y
Long\ path/Long\ program\ name Parameter\ one Parameter\ two…
no son ambiguos. Los sistemas operativos basados en Unix minimizan el uso de espacios incrustados para minimizar la necesidad de comillas. En Microsoft Windows , a menudo es necesario usar comillas porque los espacios incrustados (como en los nombres de directorios) son comunes.
Intérprete de línea de comandos
Aunque la mayoría de los usuarios conciben la consola como un intérprete de comandos interactivo, en realidad es un lenguaje de programación en el que cada instrucción ejecuta un comando. Debido a que debe satisfacer tanto los aspectos interactivos como los de programación de la ejecución de comandos, es un lenguaje peculiar, moldeado tanto por la historia como por el diseño.
- Brian W. Kernighan y Rob Pike [ 45 ]
El término intérprete de línea de comandos se aplica a programas informáticos diseñados para interpretar una secuencia de líneas de texto que puede ser introducida por un usuario, leída desde un archivo u otro tipo de flujo de datos . El contexto de interpretación suele ser el de un sistema operativo o lenguaje de programación determinado .
Los intérpretes de línea de comandos permiten a los usuarios ejecutar diversos comandos de forma muy eficiente (y a menudo concisa). Para ello, el usuario debe conocer los nombres de los comandos y sus parámetros, así como la sintaxis del lenguaje que se interpreta.
El mecanismo Unix #!y el comando EXTPROC de OS/2 facilitan el paso de archivos por lotes a procesadores externos. Estos mecanismos permiten escribir procesadores de comandos específicos para usos concretos y procesar archivos de datos externos contenidos en archivos por lotes.
Muchas interfaces gráficas, como el Administrador de presentaciones de OS/2 y las primeras versiones de Microsoft Windows, utilizan líneas de comandos para llamar a programas auxiliares que abren documentos y programas. Los comandos se almacenan en la interfaz gráfica o en archivos como el registro o el archivo de configuración de OS/2OS2USER.INI .
Historia temprana


Las primeras computadoras no admitían dispositivos interactivos de entrada/salida, y a menudo dependían de interruptores y luces para comunicarse con el operador . Esto era suficiente para sistemas por lotes que ejecutaban un programa a la vez, con el programador actuando frecuentemente como operador. Además, tenía la ventaja de requerir pocos recursos, ya que las luces y los interruptores podían probarse y configurarse con una sola instrucción de máquina. Posteriormente, se añadió una consola de sistema para permitir la comunicación del operador con el sistema.
A partir de la década de 1960, la interacción de los usuarios con las computadoras se realizaba principalmente mediante interfaces de línea de comandos, inicialmente en máquinas como el Teletype Model 33 ASR, pero luego en los primeros terminales de computadora basados en CRT, como el VT52 .
Todos estos dispositivos eran puramente textuales, sin capacidad para mostrar gráficos o imágenes. [ nb 3 ] Para los programas de aplicaciones empresariales , se utilizaban menús basados en texto , pero para una interacción más general, la interfaz era la línea de comandos.
Alrededor de 1964, Louis Pouzin introdujo el concepto y el nombre shell en Multics , basándose en funcionalidades anteriores y más simples del Sistema de Tiempo Compartido Compatible (CTSS). [ 46 ]
Desde principios de la década de 1970, el sistema operativo Unix adoptó el concepto de un potente entorno de línea de comandos e introdujo la capacidad de redirigir la salida de un comando como entrada para otro. Unix también permitía guardar y volver a ejecutar secuencias de comandos como scripts de shell , que funcionaban como comandos personalizados.
La línea de comandos también fue la interfaz principal de los primeros ordenadores domésticos, como el Commodore PET , el Apple II y el BBC Micro , casi siempre en forma de intérprete BASIC . Cuando llegaron los microordenadores más potentes orientados a los negocios, con CP/M y, posteriormente, ordenadores con DOS como el IBM PC , la línea de comandos empezó a adoptar parte de la sintaxis y las características de los intérpretes de comandos de Unix, como la inserción de comodines y la redirección de la salida.
La línea de comandos fue desafiada seriamente por primera vez por el enfoque de interfaz gráfica de usuario (GUI) PARC utilizado en el Apple Lisa de 1983 y el Apple Macintosh de 1984. Algunos usuarios de computadoras utilizaron GUI como GEOS y Windows 3.1 , pero la mayoría de los usuarios de IBM PC no reemplazaron su shell COMMAND.COM con una GUI hasta que se lanzó Windows 95 en 1995. [ 47 ] [ 48 ]
Uso moderno como shell de sistema operativo
Si bien la mayoría de los usuarios informáticos no expertos utilizan actualmente una interfaz gráfica de usuario (GUI) casi exclusivamente, los usuarios más avanzados tienen acceso a potentes entornos de línea de comandos:
- Los sistemas tipo Unix incluyen el intérprete de comandos Bourne y otros intérpretes compatibles como Bash y otros intérpretes de comandos de Unix .
- FreeBSD utiliza tcsh como intérprete de comandos interactivo predeterminado para el superusuario y ash como intérprete de comandos de scripting predeterminado.
- Muchas distribuciones de Linux incluyen Bash.
- macOS de Apple y algunas distribuciones de Linux utilizan zsh . Anteriormente, macOS utilizaba tcsh y Bash.
- Los sistemas Linux embebidos (y otros sistemas embebidos similares a Unix) suelen utilizar ash, como parte de Busybox .
- Android utiliza el intérprete de comandos mksh , [ 49 ] [ 50 ] que reemplaza un intérprete de comandos derivado de ash [ 51 ] que se utilizaba en versiones anteriores de Android , complementado con comandos del binario separado toolbox [ 52 ] .
- OpenVMS utiliza el lenguaje de comandos DIGITAL (DCL).
- Las consolas de comandos de Unix se han adaptado a OpenVMS.
- DOS y Windows tienen varios entornos de línea de comandos.
- COMMAND.COM es el intérprete de línea de comandos de MS-DOS , IBM PC DOS y Windows 9x , así como de clones como DR-DOS , SISNE plus , PTS-DOS , ROM-DOS y FreeDOS .
- Windows NT tiene cmd.exe y las versiones posteriores tienen PowerShell.
- El Kit de recursos de Windows y los Servicios de Windows para UNIX incluyen los intérpretes de comandos Korn y Bourne, junto con un intérprete de Perl (los Servicios para UNIX contienen ActiveState ActivePerl en versiones posteriores e Interix para las versiones 1 y 2, y un intérprete de comandos compilado por Microsoft).
- Los usuarios de Windows pueden usar la interfaz CScript para alternar programas desde la línea de comandos. También hay implementaciones del shell de Unix disponibles como parte del subsistema POSIX , [ 53 ] Cygwin , MKS Toolkit , UWIN , Hamilton C shell y otros paquetes de software. Los shells disponibles para estas herramientas de interoperabilidad incluyen csh , ksh , sh , Bash, rsh , tclsh y, con menos frecuencia , zsh , psh.
- DCL se ha adaptado a sistemas Windows al menos tres veces, incluyendo PC-DCL y Acceler8 DCL Lite.
- cmd.exe es, sin duda, una interfaz simplificada para Windows CE 3.0.
- Se ha adaptado a Windows CE un intérprete de tipo MS-DOS llamado PocketDOS ; la versión más reciente es casi idéntica a MS-DOS 6.22 y también puede ejecutar Windows 1, 2 y 3.0, QBasic y otras herramientas de desarrollo, 4NT y 4DOS. La última versión incluye varios intérpretes de comandos, como MS-DOS 6.22, PC DOS 7, DR DOS 3.xx y otros.
- IBM OS/2 (y sus derivados como eComStation y ArcaOS ) tiene el procesador cmd.exe . Este copia los comandos de COMMAND.COM , con extensiones a REXX .
- Las implementaciones de PHP cuentan con una interfaz de línea de comandos para uso interactivo llamada php-cli.
- La versión estándar de Tcl/Tk tiene dos intérpretes de comandos interactivos, Tclsh y Wish, siendo este último la versión con interfaz gráfica de usuario (GUI).
- Python , Ruby , Lua , XLNT y otros intérpretes también cuentan con shells de comandos para su uso interactivo.
- HarmonyOS , OpenHarmony y Oniro utilizan los comandos del sistema de compatibilidad de la caja de herramientas de terceros adjunta al kernel de Linux del subsistema KAL y la biblioteca POSIX ( musl-libc ) con ABI de Linux del kernel HongMeng junto con el Shell predeterminado con sus propios comandos exec nativos. [ 54 ] [ 55 ]
- Los routers con Cisco IOS , [ 56 ] Junos [ 57 ] y muchos otros se configuran habitualmente desde la línea de comandos.
- El sistema operativo Plan 9 utiliza el intérprete de comandos rc , cuyo diseño es similar al del intérprete de comandos Bourne.
Programación de scripts
La mayoría de los intérpretes de línea de comandos admiten scripts en diversos grados. Al fin y al cabo, son intérpretes de un lenguaje de programación interpretado , aunque en muchos casos dicho lenguaje es exclusivo del intérprete en cuestión. Interpretan scripts, también conocidos como scripts de shell o archivos por lotes , escritos en el lenguaje que interpretan. Algunos intérpretes de línea de comandos incorporan además los motores de interpretación de otros lenguajes, como REXX , lo que permite ejecutar scripts en esos lenguajes directamente dentro del propio intérprete.
Por el contrario, los lenguajes de programación de scripts , en particular aquellos con una función `eval` (como REXX, Perl , Python , Ruby o Jython ), pueden utilizarse para implementar intérpretes y filtros de línea de comandos. En algunos sistemas operativos , sobre todo en DOS , dicho intérprete de comandos proporciona una interfaz de línea de comandos más flexible que la predeterminada. En otros casos, dicho intérprete de comandos puede presentar una interfaz de usuario altamente personalizada que utiliza las funciones de entrada/salida y de interfaz de usuario del lenguaje.
Otras interfaces de línea de comandos
La línea de comandos proporciona una interfaz entre los programas y el usuario. En este sentido, la línea de comandos es una alternativa a un cuadro de diálogo . Los editores y las bases de datos presentan una línea de comandos, en la que pueden ejecutarse distintos procesadores de comandos. Por otro lado, también se pueden incluir opciones en la línea de comandos, que abre un cuadro de diálogo. La última versión de «Take Command» incluye esta función. DBase utilizaba un cuadro de diálogo para construir las líneas de comandos, que podían editarse antes de su uso.
Programas como BASIC, diskpart , Edlin y QBASIC ofrecen interfaces de línea de comandos, algunas de las cuales utilizan el intérprete de comandos del sistema. BASIC se basa en la interfaz predeterminada de los ordenadores Intel de 8 bits. Las calculadoras pueden ejecutarse mediante interfaces de línea de comandos o de diálogo.
Emacs proporciona una interfaz de línea de comandos en forma de minibúfer. Los comandos y argumentos se pueden introducir utilizando la compatibilidad estándar de edición de texto de Emacs, y la salida se muestra en otro búfer.
Existen varios juegos en modo texto, como Adventure o King's Quest 1-3 , que requieren que el usuario escriba comandos en la parte inferior de la pantalla. Se controla al personaje escribiendo comandos como "obtener anillo" o "mirar". El programa devuelve un texto que describe cómo lo ve el personaje o cómo se ejecuta la acción. La aventura de texto The Hitchhiker's Guide to the Galaxy , una obra de ficción interactiva basada en el libro homónimo de Douglas Adams , es un juego de línea de comandos al estilo teletipo.
La interfaz más destacada es la interfaz de flujos estándar , que permite que la salida de un comando se pase a la entrada de otro. Los archivos de texto también pueden cumplir ambas funciones. Esto proporciona las interfaces de tuberías, filtros y redirección. En Unix, los dispositivos también son archivos , por lo que el tipo de archivo habitual para el intérprete de comandos utilizado para stdin, stdout y stderr es un archivo de dispositivo tty .
Otra interfaz de línea de comandos permite que un programa de shell ejecute programas auxiliares, ya sea para abrir documentos o iniciar un programa. El comando se procesa internamente por el shell y luego se pasa a otro programa para abrir el documento. La interfaz gráfica de Windows y OS/2 depende en gran medida de las líneas de comando que se pasan a otros programas (de consola o gráficos), los cuales generalmente procesan la línea de comando sin mostrar una consola de usuario.
Programas como el editor OS/2 E y algunos otros editores de IBM pueden procesar líneas de comandos normalmente destinadas al intérprete de comandos, y la salida se coloca directamente en la ventana del documento.
El campo de URL de un navegador web puede utilizarse como línea de comandos. Permite ejecutar aplicaciones web , acceder a la configuración del navegador y realizar búsquedas. Google , conocido como «la línea de comandos de internet», realiza búsquedas específicas de dominio cuando detecta parámetros de búsqueda en un formato conocido. [ 58 ] Esta funcionalidad está disponible tanto si la búsqueda se inicia desde un campo del navegador como en el sitio web de Google.
Hay bibliotecas de JavaScript que ayudan a los desarrolladores a escribir aplicaciones de línea de comandos para el navegador como aplicaciones web independientes o como parte de aplicaciones más grandes. [ 59 ] Un ejemplo de este tipo de sitio web es la interfaz CLI de DuckDuckGo . [ 60 ] También hay aplicaciones SSH basadas en la web que permiten acceder a la interfaz de línea de comandos de un servidor desde un navegador.
Muchos videojuegos para PC incluyen una interfaz de línea de comandos, a menudo denominada consola. Generalmente, la utilizan los desarrolladores del juego durante el desarrollo y los creadores de mods para depurar errores, así como para hacer trampas o saltarse partes del juego.
Véase también
Notas
- ↑ Un ejemplo es el completo sistema de ayuda interna del comando DEBUG de DR-DOS 7.03 , que se puede invocar a travésdel indicador de depuración (en lugar de solo lavista general predeterminada). Se pueden seleccionar páginas de ayuda específicas a través de(dondees el número de la página). Además, se puede mostrar la ayuda para comandos específicos especificando el nombre del comando después de, feinvocará la ayuda para los diversos comandos de volcado (comoetc.). Algunas de estas características ya eran compatibles con DR DOS 3.41 SID86 y GEMSID .
????nn??DD - ↑ Una diferencia notable al describir la sintaxis de comandos de los sistemas operativos tipo DOS es que la documentación de Windows Server 2003 R2 utiliza cursiva para la información que el usuario debe proporcionar, mientras que la documentación de Windows Server 2008 utiliza corchetes angulares. El comando de ayuda interno no puede mostrar la cursiva, mientras que no hay problema con los corchetes angulares.
- ↑ Con la excepción del arte ASCII .
Referencias
- ↑ "Instructor de línea de comandos para SQLite" . Archivado del original el 6 de octubre de 2022. Consultado el 9 de julio de 2025 .
- ↑ "CAS - Configuración del intérprete de comandos" .
- ↑ "La evolución de la interfaz de línea de comandos (CLI): una perspectiva histórica | Contentstack" . www.contentstack.com . Archivado del original el 12 de febrero de 2025. Consultado el 28 de enero de 2025 .
- ↑ "4 de julio: Whirlwind del MIT permite la entrada de datos mediante teclado a la máquina | Este día en la historia | Museo de Historia de la Computación" . www.computerhistory.org . Consultado el 21 de mayo de 2026 .
- ↑ Edwards, Benj (17 de mayo de 2021). "¿Qué son los teletipos y por qué se usaban con las computadoras?" . How-To Geek . Recuperado el 21 de mayo de 2026 .
- ↑ "Unix Shells" . Archivado del original el 8 de noviembre de 2007.
La idea de tener un "shell de comandos" reemplazable en lugar de un "monitor" estrechamente integrado con el núcleo del sistema operativo tiende a atribuirse a Multics.
- 1 2 "El origen de la concha" . www.multicians.org . Archivado del original el 21-12-2017 . Recuperado el 12-04-2017 .
- ↑ Metz, Cade (2013-01-03). "Say Bonjour to the Internet's Long-Lost French Uncle" . Wired . Archivado del original el 2017-02-11 . Recuperado el 2017-07-31 .
- ↑ Mazières, David (otoño de 2004). "MULTICS: los primeros siete años" . Sistemas operativos avanzados . Departamento de Ciencias de la Computación de Stanford. Archivado del original el 23 de noviembre de 2014. Consultado el 1 de agosto de 2017 .
- 1 2 Jones, M. (2011-12-06). "Evolución de los shells en Linux" . developerWorks . IBM . Archivado del original el 2017-07-08 . Recuperado el 2017-08-01 .
- ↑ "Historia de la interfaz gráfica de usuario" . KASS . Consultado el 24 de marzo de 2024 .
- ↑ Singh, Amit (19 de junio de 2006). Mac OS X Internals: A Systems Approach . Addison-Wesley Professional. ISBN 978-0-13-270226-3.
- ↑ "1. Línea de comandos y entorno" . Documentación de Python . Archivado del original el 5 de agosto de 2024. Consultado el 5 de agosto de 2024 .
- ↑ "¿Qué es una CLI? - Interfaz de línea de comandos explicada - AWS" . Amazon Web Services, Inc. Archivado del original el 14 de enero de 2025. Consultado el 28 de enero de 2025 .
- ↑ "Referencia de GNU BASH" . Archivado del original el 3 de diciembre de 2010. Consultado el 20 de diciembre de 2015 .
- ↑ "Descripción general del shell de comandos de Microsoft Windows" . 11 de septiembre de 2009. Archivado del original el 5 de septiembre de 2015. Consultado el 12 de julio de 2015 .
- ↑ "Lista de comandos integrados del shell" . Manual de Linux . 5 de julio de 2023. Consultado el 5 de agosto de 2024 .
- ↑ B, Jason. "Cómo configurar la variable $PATH en Linux | Opensource.com" . opensource.com . Consultado el 5 de agosto de 2024 .
- ↑ JasonGerend (03-02-2023). "path" . learn.microsoft.com . Archivado del original el 27-06-2024 . Consultado el 05-08-2024 .
- ↑ "Interfaz de línea de comandos (CLI)" . tutorials.cloudfoundry.org . Archivado del original el 11 de febrero de 2025. Consultado el 28 de enero de 2025 .
- ↑ Aprendiendo el intérprete de comandos bash . Programación de intérpretes de comandos UNIX (Segunda edición). O'Reilly Media . Enero de 1998. ISBN 978-1-56592-347-8Archivado del original el 5 de agosto de 2024. Consultado el 5 de agosto de 2024 .
- ↑ Guía del usuario de SID (PDF) . Investigación digital . 1978. 595-2549. Archivado (PDF) del original el 20 de octubre de 2019. Consultado el 6 de febrero de 2020 .(4+69 páginas)
- ↑ Guía del usuario de SID-86 para CP/M-86 (2.ª ed.). Investigación digital . Agosto de 1982 [marzo de 1982]. SID86UG.WS4. Archivado del original el 20 de octubre de 2019. Consultado el 6 de febrero de 2020 . (Nota: Versión del manual transcrita por Emmanuel Roche con los comandos Q, SR y Z añadidos).
- ^ 1 2 3 4 5 6 7 8 9 10 11 Paul, Matías R. (30 de julio de 1997). "NWDOS-TIP: consejos y trucos para Novell DOS 7, con Blick auf desdokumentierte detalles, errores y soluciones" . MPDOSTIP . Versión 157 (en alemán) (3 ed.). Archivado desde el original el 10 de septiembre de 2017 . Consultado el 6 de septiembre de 2014 . (Nota: NWDOSTIP.TXT es una obra exhaustiva sobre Novell DOS 7 y OpenDOS 7.01 , que incluye la descripción de muchas características y aspectos internos no documentados. Forma parte de la colección MPDOSTIP.ZIP del autor, aún más extensa, que se mantuvo hasta 2001 y se distribuyó en numerosos sitios web en aquella época. El enlace proporcionado dirige a una versión anterior del archivo NWDOSTIP.TXT convertida a HTML).
- ↑ Parker, Steve (2011). «Capítulo 11: Elección y uso de shells». Shell Scripting: Expert Recipes for Linux, Bash and more . Programmer to programmer. Indianápolis, EE. UU.: John Wiley & Sons . pág. 262. ISBN 978-111816632-1.
El intérprete de comandos tiene cuatro indicadores de comandos diferentes, llamados PS1, P52, P53 y PS4. PS significa Prompt String (cadena de comandos).
- ↑ Guía del usuario de RISC OS 3 (PDF) . Acorn Computers Limited . 1 de marzo de 1992. pág. 125. Archivado (PDF) del original el 9 de enero de 2017. Consultado el 12 de abril de 2017 .
- ↑ nguyen-dows (29/05/2024). "Argumentos de la línea de comandos de Windows Terminal" . learn.microsoft.com . Archivado del original el 05/08/2024 . Consultado el 05/08/2024 .
- ↑ "Argumentos de línea de comandos en C" . www.w3schools.in . Archivado del original el 5 de agosto de 2024. Consultado el 5 de agosto de 2024 .
- ↑ "Argumentos de línea de comandos en Java" . GeeksforGeeks . 16 de agosto de 2016. Archivado del original el 5 de agosto de 2024. Consultado el 5 de agosto de 2024 .
- ↑ "sys — Parámetros y funciones específicos del sistema" . Documentación de Python . Consultado el 27 de marzo de 2026 .
- 1 2 3 4 Brothers, Hardin; Rawson, Tom ; Conn, Rex C .; Paul, Matthias R.; Dye, Charles E.; Georgiev, Luchezar I. (2002-02-27). Ayuda en línea de 4DOS 8.00 .
- ↑ Paul, Matthias R. (1998-01-09). DELTREE.BAT R1.01 Eliminación extendida de archivos y directorios . Caldera, Inc. Archivado del original el 2019-04-08 . Recuperado el 2019-04-08 .
- ↑ DR-DOS 7.03 WHATSNEW.TXT — Cambios de DR-DOS 7.02 a DR-DOS 7.03 . Caldera, Inc. 1998-12-24. Archivado desde el original el 8 de abril de 2019 . Consultado el 8 de abril de 2019 .
- ↑ "Sintaxis de argumentos (La biblioteca C de GNU)" . gnu.org . Archivado del original el 18 de junio de 2021. Consultado el 9 de julio de 2021 .
- ↑ Kasibatla, Saketh Ram; Medleri Hiremath, Kiran; Rothkopf, Raven; Lerner, Sorin; Xia, Haijun; Hempel, Brian (1 de octubre de 2025). The Command Line GUIde: Graphical Interfaces from Man Pages via AI . University of California San Diego . Consultado el 15 de junio de 2026 .
- ↑ Kasibatla, Saketh Ram; Medleri Hiremath, Kiran; Rothkopf, Raven; Lerner, Sorin; Xia, Haijun; Hempel, Brian (1 de octubre de 2025). The Command Line GUIde: Graphical Interfaces from Man Pages via AI . University of California San Diego . Consultado el 15 de junio de 2026 .
- 1 2 3 Paul, Matthias R. (2002-05-13). " [ fd-dev ] mkeyb" . freedos-dev . Recuperado el 2018-09-10 .
[…] CPI /H […] CPI [@] [@] [/?|/Help[:topic]) [/!|/About] […] [?|&] […] /?, /Help Muestra esta pantalla de ayuda o ayuda específica para un tema (+) […] /!, /About Muestra la pantalla de información 'Acerca de' […] /Cpifile (+) .CPI/.CP nombre de archivo <EGA.CPI>; extensión: <.CPI>; CPI.EXE=StdIn […] /Report Nombre de archivo de informe <'
'=StdOut>; extensión: <.RPT> […] /Estilo (+) Exportar <0>-6=BIN-raw/ROM/RAM/PSF0/1/SH/CHED; 7-12/13-18/19-24=ASM-hex/dec/bin/ip/il/p/l/mp/ml […] CPI /H:C […] Descripción general del uso de parámetros de archivo de página de códigos: […] CPI /H:S […] Descripción general de los parámetros /Estilo: […] ?, & Modo de edición en línea (solicita entrada de parámetros adicionales) […]{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - 1 2 Paul, Matthias R. (2002-01-09). "SID86" . Grupo de noticias : comp.os.cpm . Recuperado el 2018-04-08 .
[…] Dado que el
DEBUG
de DR-DOS 7.03
todavía se basa en el antiguo
SID86.EXE
, sugiero ejecutar DEBUG 1.51 e ingresar al sistema de ayuda extendida con
?? desde el indicador de depuración. Esto le proporcionará ocho pantallas llenas de ayuda sobre sintaxis y características. Algunas de estas características también eran compatibles con versiones anteriores. […]
{{cite newsgroup}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - 1 2 Paul, Matthias R.; Frinke, Axel C. (2006-01-16). FreeKEYB - Controlador avanzado internacional de teclado y consola DOS (Manual del usuario) ( edición preliminar v7).
- ↑ Documentación en línea de CCI Multiuser DOS 7.22 GOLD . Concurrent Controls, Inc. (CCI). 10 de febrero de 1997. HELP.HLP.(Nota: El depurador de instrucciones simbólicas SID86 proporciona una breve pantalla de ayuda
?y una ayuda completa??). - ↑ Paul, Matthias R. (1997-05-24) [1991]. "DRDOSTIP.TXT – Tips und Tricks für DR DOS 3.41 - 5.0" . MPDOSTIP (en alemán) (47.ª ed.). Archivado del original el 7 de noviembre de 2016. Consultado el 7 de noviembre de 2016 .
- ↑ "Especificaciones básicas de The Open Group, número 7, capítulo 12.1 Sintaxis de argumentos de utilidad" . The Open Group . 2008. Archivado del original el 30 de abril de 2013. Consultado el 7 de abril de 2013 . – Manual de convenciones y miscelánea de Linux (Nota: Convenciones para describir comandos en sistemas operativos tipo Unix).
- ↑ "Información general del shell de comandos" . Ayuda del producto Windows Server 2003. Microsoft . 21/01/2005. Archivado del original el 12/07/2012 . Consultado el 07/04/2013 .
- ↑ "Clave de sintaxis de línea de comandos" . Biblioteca TechNet de Windows Server 2008 R2 . Microsoft . 25 de enero de 2010. Archivado del original el 4 de mayo de 2013. Consultado el 7 de abril de 2013 .
- ↑ Kernighan, Brian W .; Pike, Rob (1984). El entorno de programación UNIX . Englewood Cliffs: Prentice-Hall . ISBN 0-13-937699-2.
- ↑ Pouzin, Louis. "El origen de la concha" . Multicians.org . Archivado del original el 21 de diciembre de 2017. Consultado el 22 de septiembre de 2013 .
- ↑ Wilcox, Joe (24 de agosto de 2010). "Recordando el lanzamiento de Windows 95 15 años después" . BetaNews . Archivado del original el 18 de febrero de 2015. Recuperado el 18 de febrero de 2015 .
- ↑ "Historia de Windows" . windows.microsoft.com . Archivado del original el 1 de marzo de 2015.
- ↑ "master - platform/external/mksh - Git en Google" . android.googlesource.com . Archivado del original el 21/01/2016 . Consultado el 18/03/2018 .
- ↑ "Android adb shell - ¿ash o ksh?" . stackoverflow.com . Archivado del original el 2 de julio de 2017 . Consultado el 14 de marzo de 2018 .
- ↑ "Android sh source" . GitHub .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "Código fuente de la caja de herramientas de Android" . GitHub .
- ↑ "Compatibilidad con shell POSIX de Windows" . 22/02/2013. Archivado del original el 03/07/2017 . Consultado el 26/08/2017 .
- ↑ openharmony/third_party_toybox , OpenHarmony, 14/10/2021, archivado del original el 07/07/2024 , consultado el 07/07/2024
- ^ "调测 - Shell介绍 - 《华为鸿蒙操作系统 (OpenHarmony) v1.0 开发者文档》 - 书栈网 · BookStack" . www.bookstack.cn . Archivado desde el original el 7 de julio de 2024 . Consultado el 7 de julio de 2024 .
- ↑ "Fundamentos de configuración Guía de configuración, Cisco IOS versión 15M&T" . Cisco . 30/10/2013. Uso de la interfaz de línea de comandos. Archivado del original el 18/11/2016 . Consultado el 28/11/2016 .
La interfaz de línea de comandos (CLI) de Cisco IOS es la interfaz de usuario principal…
- ↑ "Descripción general de la interfaz de línea de comandos" . www.juniper.net . Archivado del original el 8 de septiembre de 2003. Consultado el 14 de marzo de 2018 .
- ↑ "Cosas extrañas de Google" . Archivado del original el 4 de marzo de 2014. Consultado el 27 de febrero de 2014 .
- ↑ "Emulador de terminal jQuery" . Archivado del original el 20 de abril de 2021. Consultado el 20 de abril de 2021 .
- ↑ "DuckDuckGo TTY" . Archivado del original el 7 de mayo de 2021. Consultado el 20 de abril de 2021 .
Enlaces externos
- Los orígenes de DOS. David Hunter, Softalk para el ordenador personal IBM, marzo de 1983. Archivado en Patersontech.com desde el año 2000 .
- Comandos de Windows : Base de datos de Microsoft TechNet "Referencia de línea de comandos"
- Comandos de Windows
- Comandos informáticos
- Historia de la interacción humano-computadora
- Arquitectura de software
- Técnicas de interfaz de usuario
- Interfaces de usuario
- Software de línea de comandos
- Intérpretes (informática)