Dieser Artikel stellt vor, wie man Autovervollständigung mit dem complete-Befehl auf der Bash-Sprachbefehlszeile für Linux-PCs, Server und Ubuntu implementiert.
Auch Vervollständigung genannt. Tab-Vervollständigung. Auf Englisch heißt es Autocompletion. Es ist eine praktische Funktion.
Wie implementiert man also eine solche Autovervollständigung?
Einige Leute implementieren möglicherweise angepasste Autovervollständigung mit fzf, aber fzf ist fzf, und obwohl es in Go geschrieben ist, ist es schwer, und für eine kleine Implementierung ist es zu viel.
Ich habe meine eigene benutzerdefinierte Funktion implementiert, und wenn ich mit dieser Funktion Tab-Vervollständigung verwende, möchte ich nur, dass sie Befehle oder Funktionen wie der type-Befehl vervollständigt.
Ich möchte Kandidaten ähnlich der Tab-Vervollständigung des cd-Befehls bereitstellen.
Wenn Sie eine benutzerdefinierte Funktion namens types() implementiert haben und Tab-Vervollständigung mit Befehlen als Kandidaten ähnlich wie type durchführen möchten, tun Sie Folgendes:
complete -A command types

Wenn Sie Kandidaten ähnlich der Tab-Vervollständigung des cd-Befehls bereitstellen möchten:
complete -F _cd hoge
Diese könnten nützlich sein:
Mit der Option-A action Die Aktion kann eine der folgenden sein, um eine Liste möglicher Vervollständigungen zu generieren:
-C command Der Befehl wird in einer Subshell-Umgebung ausgeführt, und seine Ausgabe wird als mögliche Vervollständigungen verwendet.
-F function Die Shell-Funktion wird in der aktuellen Shell-Umgebung ausgeführt. Bei der Ausführung ist $1 der Name des Befehls, dessen Argumente vervollständigt werden, $2 ist das zu vervollständigende Wort und $3 ist > das Wort, das dem zu vervollständigenden Wort vorausgeht, wie oben beschrieben (siehe Programmable Completion). Wenn sie fertig ist, werden die möglichen Vervollständigungen aus dem Wert der COMPREPLY-Array-Variablen abgerufen.
-A können Sie Tab-Vervollständigungskandidaten auf vorlagenähnliche Weise einfach zuweisen. Wählen Sie Ihren Lieblingswert aus dem Folgenden:
```
alias
arrayvar
binding
builtin
command
directory
disabled
enabled
export
file
function
group
helptopic
hostname
job
keyword
running
service
setopt
shopt
signal
stopped
user
variable
```
Für eine detaillierte Erklärung siehe die folgende Referenz:
Bash Reference Manual bash - What’s the use of complete command? - Ask Ubuntu
Wenn Sie sich die bash_completion-Datei ansehen, werden Sie verstehen, aber der Code ist komplex und Sie haben keine Lust, ihn zu lesen. Selbst type _cd ergibt keinen Sinn, was geschrieben steht…
Ich denke, die diesmal vorgestellte Methode ist gut für einfache Autovervollständigung, aber für diejenigen, die komplexe Autovervollständigung implementieren möchten, empfehle ich die Verwendung von fzf.