Und wie werden auch Aliase automatisch vervollständigt?
quelle
Abhängig vom Befehl:
/etc/bash_completion.d/*
(oder an einem anderen Ort auf einigen Systemen). Diese Funktionen sind beim eingebauten System registriert (z. B. weist bash an, die Funktion aufzurufen , wenn Sie auf einen Befehl drücken ). Sie verwenden die eingebaute Funktion, um bash mitzuteilen, dass "hier die möglichen Vervollständigungen sind".complete
complete -F _find find
_find
Tabfind
compgen
--help
und analysiert die Ausgabe. Solche Befehle können mit dem complete
eingebauten registriert werden , z complete -F _longopt ls
. _longopt
ist in der Tat eine Funktion zur Erstellung von Abschlüssen, die die Ausgabe eines Befehls analysiert, anstatt eine feste Liste zu verwenden. (Es gibt andere speziellere Vervollständigungsfunktionen, die die Ausgabe eines Befehls analysieren, um mögliche Vervollständigungen zu generieren. Schauen Sie sich /etc/bash_completion.d/*
Beispiele an.)complete
eingebaute hat dafür Optionen, zB -A
für Aliase.Schauen Sie sich die Datei an
/ etc / bash_completion
und beobachte die Dateien aus dem Verzeichnis:
/etc/bash_completion.d
Sie finden die Antwort.
Unterstützung für die Bash-Vervollständigung wird in Debian und Ubuntu durch das Bash-Vervollständigungspaket bereitgestellt . Außerdem müssen Sie in der Regel die folgenden Kommentare entfernen /etc/bash.bashrc
und / oder .bashrc
die Bash-Abschlussdateien als Quelle verwenden. Folgendes kommt von /etc/bash.bashrc
:
# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
damit dies funktioniert. Normalerweise kommentiere ich beides aus. Der Umgang mit interaktiven / Login-Shells in Debian ist ein bisschen chaotisch.
Ähnliche Kommentare gelten vermutlich für andere Distributionen, obwohl sie möglicherweise standardmäßig das Sourcing aktivieren.