Was sind diese Unterstrichbefehle?

10

Wenn ich tab tab _im Terminal bin , schlägt Bash 206 Möglichkeiten vor. Ich habe versucht, einen von ihnen zu _git_rmleiten, aber nichts ist passiert. Was sind sie?

Hier ist ein Screenshot:

Geben Sie hier die Bildbeschreibung ein

zeichnen
quelle
11
type _git_rmwird Ihnen wahrscheinlich sagen, dass es eine Funktion ist. grep -R '_git_rm' /etc/bash_completion.d/werde es wahrscheinlich finden. Diese Funktionen sind normalerweise diejenigen, die die verschiedenen Vervollständigungslisten zur bashVervollständigung bereitstellen .
Manatwork
@manatwork bitte poste das als Antwort.
Derobert
@derobert, ich wollte nur einen kurzen Hinweis geben, damit der Frageninhaber etwas bekommt, bevor die Expertenantwort ~ 7 Stunden später veröffentlicht wird.
Manatwork
@manatwork Die Antwort ist genug für mich ... Ich kann mehr selbst erforschen: D Wenn es Ihnen nichts ausmacht, werde ich Gilles 'Antwort akzeptieren, obwohl ich denke, ich sollte Ihre akzeptieren ..
Unentschieden
@draw, Gilles 'Antwort basiert wahrscheinlich auf Recherchen und Erfahrungen, während meine auf zufälligen Beobachtungen basiert, die beim Crawlen von Verzeichnissen gemacht wurden. Bitte akzeptiere seine.
Manatwork

Antworten:

12

Diese Funktionen, deren Name mit einem Unterstrich beginnt, sind Teil der programmierbaren Vervollständigungs-Engine. Bash folgt hier der zsh-Konvention, bei der die Funktion somecommandaufgerufen wird _somecommand, für die Vervollständigungen generiert werden , und wenn diese Funktion Hilfsfunktionen erfordert, werden sie aufgerufen _somecommand_stuff.

Diese Abschlussfunktionen tun normalerweise nichts Nützliches oder lösen einen Fehler aus, wenn Sie sie manuell aufrufen: Sie sollen von der Abschluss-Engine aufgerufen werden.

Dies folgt auf eine in verschiedenen Programmiersprachen weit verbreitete Praxis, einen führenden Unterstrich zu verwenden, um anzuzeigen, dass eine Funktion oder Variable in irgendeiner Weise in einer Bibliothek intern ist und nicht für den Endbenutzer (oder Endprogrammierer) bestimmt ist.

Gilles 'SO - hör auf böse zu sein'
quelle