
Für diese eigenen Erweiterungen gibt es den in die Bash integrierten Befehl complete. Möchten sie z. B. eine neue Vervollständigung für Gruppennamen beim Befehl chgrp können sie folgendes Kommando verwenden:
complete -g -f chgrp
Was bedeutet dies? Die Syntax von complete verlangt erst welche Komplettierungen vorgenommen werden sollen und danach bei welchen Befehlen. -g steht dabei für Gruppennamen und -f für Dateinamen (welche wir ja auch weiterhin wollen).
Möchte ich nun beispielsweise für den Befehl chown einstellen, das sowohl Usernamen als auch Gruppennamen, als auch Dateinamen komplettiert werden, kann ich folgendes Kommando benutzen:
complete -u -g -f chown
Es ist auch möglich explizit Verzeichnisse und Dateien getrennt zur Vervollständigung zu behandeln. Möchte ich zum Beispiel das der Befehl rmdir nur Verzeichnisse aber keine normalen Dateien vervollständigt kann ich dafür den Parameter -d einsetzen:
complete -d rmdir
Die Parameter -u, -g, -f und -d erlauben mir jedoch nur vorgegebene Parameter wie Usernamen oder Verzeichnisse zu Kommandos zuzuordnen, was aber wenn ich dem Befehl make, make-Ziele wie install clean oder menuconfig zuordnen will? Auch dafür gibt es eine Lösung. Selbstdefinierte Optionen kann ich einem Befehl über den Parameter -W zuordnen.
Das kann z. B. so aussehen:
complete -W "install clean modules_install menuconfig oldconfig" make
Ich schreibe also nach -W meine Stichwörter in Anführungszeichen und ordne sie dem Befehl zu. Wenn sie diese Definitionen nun behalten möchten, dann schreiben Sie sie in eine Datei die von der Shell beim starten eingelesen wird, wie z. B. ~/.bashrc. Eine vollständige Liste der Parameter für complete erhalten Sie in der manpage der bash.