Verstehe den eingebauten Befehl `compgen`


36

Von help compgen:

$ help compgen
compgen: compgen [-abcdefgjksuv] [-o option]  [-A action] [-G globpat] [-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]
    Display possible completions depending on the options.

    Intended to be used from within a shell function generating possible
    completions.  If the optional WORD argument is supplied, matches against
    WORD are generated.

    Exit Status:
    Returns success unless an invalid option is supplied or an error occurs.

Also, was tun Optionen [-abcdefgjksuv]für steht?

Mit anderen Worten, ich möchte wissen, wie alle Optionen verwendet werden.


Hast du die Manpage gelesen? man compgen. Die Manpage ist für die Shell-Builtins, daher müssen Sie nach unten scrollen compgen.
garethTheRed

5
"man compgen" gibt es nicht. benutze "man bash"
kevinf

Antworten:


37

Die Befehlsoptionen compgensind completemit Ausnahme von -pund identisch -r. Aus der compgenManpage:

compgen
 compgen [option] [word]
 Generate possible completion matches for word according to the options, which 
 may be any option accepted by the complete builtin with the exception of -p 
 and -r, and write the matches to the standard output

Für Optionen [abcdefgjksuv]:

  • -a bedeutet Namen von Alias
  • -b bedeutet Namen von Shell-Builtins
  • -c bedeutet Namen aller Befehle
  • -d bedeutet Namen des Verzeichnisses
  • -e bedeutet Namen der exportierten Shell-Variablen
  • -f bedeutet Dateinamen und Funktionen
  • -g bedeutet Namen von Gruppen
  • -j bedeutet Namen des Jobs
  • -k bedeutet Namen von Shell reservierten Wörtern
  • -s bedeutet Namen des Dienstes
  • -u bedeutet Namen von userAlias ​​Namen
  • -v bedeutet Namen von Shell-Variablen

Die vollständige Manpage finden Sie hier .


@ Pandya: Siehe Optionen für complete, es ist dasselbe wie compgen, außer -pund -r.
Donnerstag,

Ich habe es gelesen man bashund vorgeschlagen, es zu bearbeiten, um Ihren Beitrag so zu vervollständigen, dass ich es ohne weiteres akzeptiere.
Pandya

1
Irgendwelche Informationen zur Verwendung compgen -G? compgen -G '*.zip'Angenommen, mein Muster ist und ich habe die Datei "foo.zip". compgen findet foo.zip, aber was ist, wenn der Benutzer bereits 'b' eingegeben hat? Jetzt sollte compgen nichts finden. Wenn ich den Befehl compgen -G '*.zip' "b"gebe, findet compgen immer noch foo.zip
Edward Falk

@cuonglm Wie liste ich Funktionen auf, die vom Befehl service bereitgestellt werden? Wenn Sie beispielsweise service networkingdie Tabulatortaste verwenden und drücken, wird die Meldung zurückgegeben force-reload reload restart start stop. Wissen Sie, wie Sie diese nutzen können compgen?
Ilia Rostovtsev

@IliaRostovtsev: siehe dieses Beispiel github.com/scop/bash-completion/blob/…
cuonglm
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.