Comprendre la commande intégrée `compgen`

37

De 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.

Alors, que représentent les options [-abcdefgjksuv]?

En d'autres termes, je veux savoir utiliser toutes les options.

Pandya
la source
Avez-vous lu la page de manuel? man compgen. La page de manuel concerne les commandes intégrées au shell, vous devrez donc faire défiler l'écran jusqu'à compgen.
garethTheRed
5
"man compgen", n'existe pas. utiliser "man bash"
kevinf

Réponses:

38

Les options de compgencommande sont les mêmes que complete, sauf -pet -r. De la compgenpage de manuel:

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

Pour les options [abcdefgjksuv]:

  • -a signifie Noms d'alias
  • -b Moyens Noms des constructions intégrées
  • -c signifie Noms de toutes les commandes
  • -d signifie Noms de répertoire
  • -e signifie Noms des variables de shell exportées
  • -f signifie Noms de fichier et fonctions
  • -g signifie Noms de groupes
  • -j signifie Noms de travail
  • -k signifie noms de mots réservés Shell
  • -s signifie noms de service
  • -u signifie Noms des noms d'utilisateurAlias
  • -v signifie Noms des variables du shell

Vous pouvez voir la page de manuel complète ici .

cuonglm
la source
@Pandya: Voir les options pour complete, c'est la même chose que compgen, sauf -pet -r.
jeudi
Je l'ai lu man bashet suggéré de compléter votre message afin que je l'accepte facilement.
Pandya
1
Des informations sur comment utiliser compgen -G? Dites que mon modèle est compgen -G '*.zip'et que j'ai le fichier "foo.zip". compgen trouvera foo.zip, mais que se passe-t-il si l'utilisateur a déjà tapé "b"? Maintenant, Compgen ne devrait rien trouver. Si je donne la commande compgen -G '*.zip' "b", compgen trouve toujours foo.zip
Edward Falk
@cuonglm Comment lister les fonctions fournies par la commande de service? Par exemple, utiliser service networkinget cliquer sur l'onglet reviendra force-reload reload restart start stop. Savez-vous comment obtenir ceux qui utilisent compgen?
Ilia Rostovtsev
@IliaRostovtsev: voir celui-ci par exemple github.com/scop/bash-completion/blob/…
jeudi