Woher kennt Bash in Ubuntu die spezifische Liste der Aktionen eines Tools?
Wenn ich zum Beispiel apt-get und tab zweimal eingebe, sehe ich nur das Entfernen, Aktualisieren, Aktualisieren usw., aber nicht die Aktionen für einen anderen Befehl oder die Dateien im aktuellen Verzeichnis.
Ich entwickle ein Befehlszeilentool in Go und möchte dieses Feature für die Distributionen bereitstellen, die es unterstützen.
bash
ubuntu
autocomplete
Amged Rustom
quelle
quelle
Antworten:
Hierzu werden die Vervollständigungsfunktionen von bash v4 verwendet. Der Beendigungscode für
apt-get
wird vombash-completion
Paket bereitgestellt und befindet sich unter/usr/share/bash-completion/completions/apt-get
. Anwendungen, die abgeschlossen sind und nicht Teil desbash-completion
Basispakets sind, platzieren ihre Abschlussskripte in/etc/bash_completion.d
.Die Abschlüsse werden über das Sourcing geladen
/etc/bash_completion
. Wo genau dies gemacht wird, hängt von der Debian- oder Ubuntu-Version ab. Das wiederum wird alles in/usr/share/bash-completion/completions
und beziehen/etc/bash_completion.d
.quelle