Unter Linux bietet Bash standardmäßig die folgende Standardvervollständigung für Benutzer zur Verwendung in der Befehlszeile:
- Variablennamen-Vervollständigung
- Vervollständigung des Benutzernamens
- Ausführbare Vervollständigung
- Dateiname und Verzeichnisvervollständigung
- Hostnamen-Vervollständigung
1. Vervollständigung des Variablennamens
Nachdem Sie $ im Terminal eingegeben haben, werden durch zweimaliges Drücken der Tabulatortaste alle verfügbaren Shell-Variablen wie unten gezeigt angezeigt.
$ 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. Vervollständigung des Benutzernamens
Wenn Sie nach der Tilde (~) zweimal die Tabulatortaste drücken, beginnt Bash automatisch mit der Vervollständigung des Benutzernamens.
$ cd ~[TAB][TAB] ~bala/ ~raj/ ~jason/ ~randy/ ~john/ ~ritu/ ~mayla/ ~thomas/ ~nisha/ ~www-data
Bitte beachten Sie, dass der Benutzername nicht aus dem Home-Verzeichnis übernommen wird. Stattdessen zeigt es alle verfügbaren Benutzernamen aus der Datei /etc/passwd
an3. Pfadnamen-Vervollständigung für ausführbare Dateien
Wenn Sie versuchen, einen Befehl auszuführen und die ausführbare Datei über die Ausführungsberechtigung verfügt, wird sie automatisch abgeschlossen, wenn eine einzelne Übereinstimmung gefunden wird, wie im folgenden Beispiel gezeigt.
$ 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
Wenn mehrere Übereinstimmungen gefunden werden, werden verfügbare Befehle angezeigt.
4. Dateiname und Verzeichnisvervollständigung
Diese Vervollständigung gilt für Dateinamen und Verzeichnisnamen, die an der zweiten und folgenden Position in der Befehlszeile auftreten. Im Gegensatz zum obigen Beispiel prüft dies nicht auf Berechtigungen und zeigt nur alle verfügbaren Dateien und Verzeichnisse an.
$ ls countfiles.sh dir1 dir2 dir3 $ cat [TAB][TAB] countfiles.sh dir1 dir2 dir3 $ cat c[TAB][TAB] $ cat countfiles.sh
Auch wenn viele Dateien anzuzeigen sind, wird anstelle der Anzeige aller Möglichkeiten auf dem Bildschirm, was sehr verwirrend werden kann, die folgende Warnmeldung ausgegeben.
$ ls -l /etc/ Display all 228 possibilities? (y or n)
5. Vervollständigung des Hostnamens
Um die Hostnamen zu erhalten, zu denen eine Verbindung hergestellt werden soll, drücken Sie zweimal die Tabulatortaste nach dem @-Symbol, wie unten gezeigt:
$ ssh john@[TAB][TAB] @dev-db @fileserver @qa-server @prod-db @localhost @web-server
Sie können diese Funktion zur Vervollständigung des Hostnamens zusammen mit jedem Befehl verwenden, bei dem Sie @ für den Hostnamen angeben können. Beispielsweise können Sie dies mit scp auch wie unten gezeigt verwenden:
$ scp filename.txt john@[TAB][TAB] @dev-db @fileserver @qa-server @prod-db @localhost @web-server
Bitte beachten Sie, dass dies die verfügbaren Hostnamen aus der Datei /etc/hosts übernimmt.