complete
ist eine eingebaute Bash-Funktion. Es gibt also keine Binärdatei auf dem System. Hier wird festgelegt, wie Befehle beim Drücken von ausgeführt werden tab.
Beispiel: Wenn Sie Folgendes eingeben:
user@host:~$ pidof <tab><tab>
... erscheint eine Liste mit allen möglichen Werten für diesen Befehl. In diesem Fall sind alle laufenden Prozesse gemeint. Siehe die Ausgabe der complete
Funktion:
user@host:~$ complete | grep pidof
complete -F _pgrep pidof
Dies bedeutet, dass die Funktion _pgrep
(-F) beim Aufrufen des Befehls ausgeführt wird pidof
. Die Definition dieser Funktion ist in /etc/bash_completion.d/procps
.
Ein weiteres Beispiel: Wenn Sie Folgendes eingeben:
user@host:~$ cd /usr/<tab><tab>
bin/ games/ include/ lib/ lib32/ local/ sbin/ share/ src/
... sehen Sie die Liste der Ordner cd
, unter denen Sie sich befinden können /usr/
. Welche Funktion wird ausgeführt? Greping die complete
Funktion (wie oben) sagt uns, es ist die Funktion _cd
in /etc/bash_completion
.
Mach es selbst : Du hast ein Programm / Skript aufgerufen /bin/myprog
und das willst du, wenn du es wie folgt ausführst
user@host:~$ myprog /home/user/<tab><tab>
... sollte nur Ordner auflisten, keine Dateien. So verlängern Sie Ihre Bash-Vervollständigung mit dem folgenden Befehl:
user@host:~$ complete -F _cd myprog
Das ist es. Sie können auch eigene Funktionen schreiben, um benutzerdefinierte Dinge zu vervollständigen, z. B. nur bestimmte Dateien oder Nummern oder Listen mit statischen Werten ...