En Linux, de forma predeterminada, Bash proporciona la siguiente finalización estándar para que los usuarios la utilicen en la línea de comandos:
- Finalización de nombre de variable
- Finalizar nombre de usuario
- Finalización del ejecutable
- Finalización de nombre de archivo y directorio
- Finalización de nombre de host
1. Finalización de nombre de variable
Después de escribir $ en la terminal, al presionar el tabulador dos veces se mostrarán todas las variables de shell disponibles, como se muestra a continuación.
$ echo $[TAB][TAB] $_ $COMP_POINT $HOSTTYPE $PS1 $_backup_glob $COMPREPLY $IFS $PS2 $BASH $COMP_TYPE $inx $PS4 $BASH_ALIASES $COMP_WORDBREAKS $LANG $PWD $BASH_ARGC $COMP_WORDS $LANGUAGE $RANDOM $BASH_ARGV $cur $LESSCLOSE $redir $BASH_CMDS $cword $LESSOPEN $SECONDS $BASH_COMMAND $DIRSTACK $LINENO $SHELL $BASH_COMPLETION_COMPAT_DIR $DISPLAY $LINES $SHELLOPTS $BASH_LINENO $errx $LOGNAME $SHLVL $BASHOPTS $EUID $LS_COLORS $split $BASHPID $exclude $MACHTYPE $SUDO_COMMAND $BASH_REMATCH $flag $MAIL $SUDO_GID $BASH_SOURCE $FUNCNAME $MAILCHECK $SUDO_UID $BASH_SUBSHELL $GROUPS $OLDPWD $SUDO_USER $BASH_VERSINFO $__grub_script_check_program $OPTERR $suffix $BASH_VERSION $HISTCMD $OPTIND $TERM $__colormgr_commandlist $HISTCONTROL $OSTYPE $UID $COLORTERM $HISTFILE $outx $USER $COLUMNS $HISTFILESIZE $PATH $USERNAME $COMP_CWORD $HISTSIZE $PIPESTATUS $words $COMP_KEY $HOME $PPID $XAUTHORITY $COMP_LINE $HOSTNAME $prev $_xspecs
2. Finalización del nombre de usuario
Cuando presiona tabulador dos veces, después de la tilde (~), bash iniciará automáticamente la finalización del nombre de usuario.
$ cd ~[TAB][TAB] ~bala/ ~raj/ ~jason/ ~randy/ ~john/ ~ritu/ ~mayla/ ~thomas/ ~nisha/ ~www-data
Tenga en cuenta que esto no recoge el nombre de usuario del directorio de inicio. En su lugar, muestra todos los nombres de usuario disponibles del archivo /etc/passwd
3. Finalización de nombre de ruta para ejecutables
Cuando intenta ejecutar un comando, si el ejecutable tiene permiso de ejecución, se completará automáticamente si se encuentra una única coincidencia, como se muestra en el ejemplo a continuación.
$ ls -l /etc/init.d/reboot -rwxr-xr-x 1 root root 639 Jan 30 2013 /etc/init.d/reboot $ /etc/init.d/reb[TAB][TAB] $ /etc/init.d/reboot
Cuando se encuentran múltiples coincidencias, mostrará los comandos disponibles.
4. Finalización de nombre de archivo y directorio
Esta finalización es para los nombres de archivos y directorios que se encuentran en la segunda posición y en las subsiguientes en la línea de comandos. A diferencia del ejemplo anterior, esto no verifica ningún permiso y solo mostrará todos los archivos y directorios disponibles.
$ ls countfiles.sh dir1 dir2 dir3 $ cat [TAB][TAB] countfiles.sh dir1 dir2 dir3 $ cat c[TAB][TAB] $ cat countfiles.sh
Además, cuando hay muchos archivos para mostrar, en lugar de mostrar todas las posibilidades en la pantalla, lo que puede resultar muy confuso, mostrará el siguiente mensaje de advertencia.
$ ls -l /etc/ Display all 228 possibilities? (y or n)
5. Finalización del nombre de host
Para obtener los nombres de host a los que conectarse, presione el tabulador dos veces después del símbolo @ como se muestra a continuación:
$ ssh john@[TAB][TAB] @dev-db @fileserver @qa-server @prod-db @localhost @web-server
Puede usar esta función de finalización de nombre de host junto con cualquier comando en el que pueda dar @ para el nombre de host. Por ejemplo, también puede usar esto con scp como se muestra a continuación:
$ scp filename.txt john@[TAB][TAB] @dev-db @fileserver @qa-server @prod-db @localhost @web-server
Tenga en cuenta que esto recoge los nombres de host disponibles del archivo /etc/hosts.