Bashs programmierbare Fertigstellung funktioniert, indem die Befehlszeile analysiert und herausgefunden wird, was abgeschlossen wird:
- Einige Kontexte werden speziell behandelt, z. B. wird das erste Wort in einem Befehl als Befehlsname vervollständigt, das folgende a
$
wird als Variablenname vervollständigt usw.
- Außerhalb dieser Kontexte versucht bash, das Argument eines Befehls zu vervollständigen, und die Einstellungen für den Befehl oder das Versagen (was normalerweise der Fall ist) für den Basisnamen des Befehls werden angewendet.
Beispielsweise vervollständigt bash nachher Befehlsnamen, die mit beginnen . Danach vervollständigt bash Variablennamen, die mit beginnen . Danach wendet bash die Abschlussregeln für den Befehl an . Abschlussregeln können eine Kategorie (Benutzer, Variable, Dateien usw.), ein Platzhaltermuster für Dateinamen oder ein auszuführendes Funktions- oder Codefragment angeben.sqllTab
sqll
sqlldr $aTab
a
sqlldr Tab
sqlldr
Abschlussregeln werden durch das complete
eingebaute definiert . Bash verfolgt nicht, wann das complete
eingebaute System aufgerufen wurde oder in welchem Skript (falls vorhanden) es sich befand. Die meisten Distributionen liefern das Bash-Completion- Paket, das eine Reihe von Regeln für allgemeine Befehle enthält. Dies erfolgt in Form einer Reihe von Skriptdateien, die Aufrufe an enthalten complete
, mit einem Skript, aus dem gelesen werden muss .bashrc
(oder das /etc/bash.bashrc
implementiert wird), um alle diese Skripte zu laden. Dies wird normalerweise . /etc/bash_completion
benötigt, um die programmierbare Fertigstellung zu aktivieren und die verfügbaren Skripte zu laden.
Das Standardpaket enthält keine Unterstützung für sqlldr
. Wenn Sie eine solche Unterstützung haben, muss diese von einer anderen Quelle stammen. Diese Quelle hat möglicherweise eine Datei in einem Verzeichnis wie gelöscht /etc/bash_completion.d
oder Anweisungen zum Einfügen von Code in Ihr Verzeichnis geliefert .bashrc
. Sie können verwenden complete -p sqlldr
, um die aktuellen Regeln für anzuzeigen sqlldr
; Wie bereits erwähnt, können Sie hier nicht feststellen, woher diese Regeln geladen wurden.
Tcsh, zsh und fish haben ähnliche Mechanismen (jeder hat sich von tcsh inspirieren lassen), aber unterschiedliche integrierte Funktionen, Syntaxen und Funktionen.
/etc/bash_completion.d
. Sehen Sie auch/etc/bash_completion
und sehen Sie sich anset
, wie stark Ihre Umgebung gewachsen ist.