El autocompletado de línea de comandos (también autocompletado de tabulación ) es una característica común de los intérpretes de línea de comandos , en la que el programa completa automáticamente los comandos parcialmente escritos.
Los intérpretes de línea de comandos son programas que permiten al usuario interactuar con el sistema operativo subyacente escribiendo comandos en un símbolo del sistema mediante una interfaz de línea de comandos (CLI), en contraste con apuntar y hacer clic con el mouse en una interfaz gráfica de usuario (GUI). La finalización de línea de comandos permite al usuario escribir los primeros caracteres de un comando, programa o nombre de archivo y presionar una tecla de finalización (normalmente Tab ↹) para completar el resto del elemento. Luego, el usuario presiona o para ejecutar el comando o abrir el archivo.Return↵ Enter
La función de completar líneas de comandos es útil de varias maneras, como se ilustra en la animación que acompaña a este artículo. Los comandos a los que se accede con frecuencia, especialmente aquellos con nombres largos, requieren menos pulsaciones de teclas para llegar a ellos. Los comandos con nombres de archivo largos o difíciles de deletrear se pueden ingresar escribiendo los primeros caracteres y presionando una tecla de completar, que completa el comando o el nombre de archivo. En el caso de múltiples posibles opciones de completar, algunos intérpretes de línea de comandos, especialmente los shells de Unix, enumerarán todas las opciones de completar comenzando con esos pocos caracteres. El usuario puede escribir más caracteres y presionar nuevamente para ver una lista nueva y acotada si los caracteres escritos aún son ambiguos, o bien completar el comando/nombre de archivo con un espacio final. Una forma alternativa de completar rota entre todos los resultados coincidentes cuando la entrada es ambigua.Tab ↹
Los elementos completables pueden incluir comandos, argumentos, nombres de archivos y otras entidades, según el intérprete específico y su configuración. La finalización de la línea de comandos generalmente solo funciona en modo interactivo . Es decir, no se puede invocar para completar comandos parcialmente escritos en scripts o archivos por lotes , incluso si la finalización es inequívoca. El nombre de finalización de tabulación proviene del hecho de que la finalización de la línea de comandos a menudo se invoca presionando la tecla de tabulación .
La función de autocompletar tabulaciones apareció en los inicios de la historia de la informática; uno de los primeros ejemplos apareció en el Berkeley Timesharing System para el SDS 940 , donde si una cadena tipeada era ambigua, el intérprete no hacía nada, pero si la cadena no era ambigua, la completaba automáticamente sin ninguna orden del usuario. Esta característica no funcionaba bien con los errores tipográficos demasiado frecuentes , por lo que era una bendición a medias. Esta característica fue imitada por los desarrolladores de Tenex , que realizaron un cambio importante: Tenex utilizó "reconocimiento de escape", en el que el intérprete no intentaría autocompletar a menos que el usuario presionara la tecla de escape (de ahí el nombre). El dominio también se expandió de solo nombres de programas en el sistema Berkeley a nombres de programas y archivos en Tenex. [1] El descendiente de Tenex, TOPS-20, trasladó la función de autocompletar línea de comandos del intérprete de comandos al sistema operativo a través de la llamada al sistema COMND JSYS, para que estuviera disponible para otras aplicaciones de usuario. [2] De ahí fue tomado prestado por Unix.
Para abrir el archivo introduction-to-command-line-completion.html con Firefox se debe escribir:
Introducción a la finalización de la línea de comandos en Firefox
Este es un comando largo de escribir. En su lugar, podemos utilizar la función de completar la línea de comandos.
El siguiente ejemplo muestra cómo funciona la finalización de línea de comandos en Bash . Es posible que otros shells de línea de comandos funcionen de forma ligeramente diferente.
Primero escribimos las tres primeras letras de nuestro comando:
abeto
Luego presionamos y como el único comando en nuestro sistema que comienza con "fir" es "firefox", se completará a:Tab ↹
Firefox
Luego comenzamos a escribir el nombre del archivo:
Firefox yo
Pero esta vez, introduction-to-command-line-completion.html no es el único archivo del directorio actual que comienza con "i". El directorio también contiene los archivos introduction-to-bash.html e introduction-to-firefox.html . El sistema no puede decidir cuál de estos nombres de archivo queremos escribir, pero sí sabe que el archivo debe comenzar con "introduction-to-", por lo que el comando se completará de la siguiente manera:
Introducción a Firefox
Ahora escribimos "c":
Introducción a Firefox C
Después de presionarlo se completará el nombre completo del archivo:Tab ↹
Introducción a la finalización de la línea de comandos en Firefox
En resumen, escribimos:
abeto yo cTab ↹Tab ↹Tab ↹
Se trata de tan solo ocho pulsaciones de teclas, lo que es considerablemente menos que las 52 pulsaciones de teclas que habríamos necesitado para escribir sin utilizar la función de autocompletar de línea de comandos.
El siguiente ejemplo muestra cómo funciona la finalización de la línea de comandos con la finalización rotativa, tal como la utiliza CMD de Windows .
Seguimos el mismo procedimiento que para solicitar la finalización hasta que tengamos:
Firefox yo
Presionamos una vez, con el resultado:Tab ↹
Introducción a Bash en Firefox
Presionamos nuevamente, obteniendo:Tab ↹
Introducción a la finalización de la línea de comandos en Firefox
En resumen, escribimos:
Abeto yoTab ↹Tab ↹Tab ↹
Se trata de solo siete pulsaciones de teclas, comparables a la finalización con indicaciones. Esto funciona mejor si sabemos entre qué posibilidades rotará el intérprete.
complete
y compgen
los comandos [4] han estado disponibles desde la versión beta 2.04 [3] en 2000 [5] y ofrecen al menos el completado de ruta y nombre de archivo.(Asegúrese de revisar la sección "Se aplica a" en cada artículo)