web-dev-qa-db-fra.com

Comprendre la commande intégrée `compgen`

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 font les options [-abcdefgjksuv] signifie?

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

40
Pandya

Les options de la commande compgen sont les mêmes que complete, sauf -p et -r. Depuis la page de manuel de compgen:

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 signifie les noms des commandes internes de Shell
  • -c signifie les noms de toutes les commandes
  • -d signifie Noms du répertoire
  • -e signifie les noms des variables Shell exportées
  • -f signifie Noms de fichier et fonctions
  • -g signifie les noms des groupes
  • -j signifie les noms des emplois
  • -k signifie les noms des mots réservés Shell
  • -s signifie Noms de service
  • -u signifie Noms des noms userAlias
  • -v signifie les noms des variables Shell

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

42
cuonglm

Chez O'Reilly, il y a un livre ( bash Quick Reference par Arnold Robbins ) qui a également la forme de conseil compgen options décrites à la fin. Aller pour la documentation complète donne quelques autres options que celles énumérées ci-dessus. Ils peuvent ne pas être liés à une version actuelle, MAIS il n'y a plus d'options ou non décrites dans les documents de la version actuelle.

Pour l'instant, j'ai vu sur le Web ces options majuscules utilisées pour l'invocation de compgen ou mentionnées dans des documents complets!

compgen [option] [Word]
complete [-abcdefgjksuv] [-o comp-option] [-A action] [-G globpat] [-W wordlist]
      [-P prefix] [-S suffix] [-X filterpat] [-F function]
      [-C command] name [name ...]
      complete -pr [name ...]
  • -A action = L'action peut être l'une des suivantes pour générer une liste de complétions possibles: (voir liens)
  • -C command = Exécute la commande dans un sous-shell et utilise sa sortie comme liste des achèvements.
  • -F fonction = Exécuter la fonction Shell dans le shell actuel. A son retour, récupérez la liste des achèvements du tableau COMPREPLY.
  • -G globpat = Le modèle d'extension de nom de fichier globpat est développé pour générer les compléments possibles.
  • -P préfixe = le préfixe est ajouté au début de chaque achèvement possible après que toutes les autres options ont été appliquées.
  • -S suffixe = le suffixe est ajouté à chaque achèvement possible après que toutes les autres options ont été appliquées.
  • -W wordlist = La liste de mots est divisée en utilisant les caractères de la variable spéciale IFS comme délimiteurs, et chaque mot résultant est développé. Les complétions possibles sont les membres de la liste résultante qui correspondent au mot en cours de finalisation.
  • -X filterpat = filterpat est un modèle utilisé pour l'expansion du nom de fichier. Il est appliqué à la liste des achèvements possibles générés par les options et arguments précédents, et chaque filtrage correspondant à l'achèvement est supprimé de la liste. Un "!" De tête dans filterpat annule le modèle; dans ce cas, tout achèvement ne correspondant pas à filterpat est supprimé.

Une version assez exhaustive de la documentation peut être trouvée dans Programmable Completion Builtins .

Comme les deux commandes sont intégrées à la commande, la documentation officielle se trouve sur votre local page de manuel pour bash. Utilisez l'option de recherche pour y localiser les pièces pertinentes. Désolé, mais la mise en page semble quelque peu cassée (utilisation réduite dans la mise en page générée) dans les deux variantes de vue, même sur les services Internet.

0
Alexander Stohr