manhome.nl

compgen

Een tamelijk onbekend (zeker voor mij) commando met grote potentie.

1. compgen

compgen is een build-in shell command en staat voor completion generator.
Expands allerlei command line parts net zoals wanneer je een commando als vis[tab] intikt en er een aantal alternatieven wordt getoond.
Helaas niet voorzien van man page, daarom deze pagina! Goed te gebruiken in scripts

Belangrijkste functies (imho):

compgen       doet niets, er moet 'iets' achter staan
compgen -a    lists alle beschikbare aliases
compgen -b    lists alle shell buildin's
compgen -c    lists alle beschikbare commando's (afh. van  PATH)
compgen -o    geeft aan dat er een optie gedefinieerd wordt, 
              zie hieronder voor meer details
compgen -u    lists alle gebruikers (user)
compgen -g    lists alle groepen (group)
compgen -v    lists alle beschikbare variabelen (de z.g. env VARIABLES)
compgen -k    lists alle bash sleutelwoorden 
              (keywords zoals 'if then in done etc.')
compgen -A function     lists alle actueel beschikbare functies
compgen -A service      lists alle geconfigureerde services

Options

Met -o kunnen een aantal opties gedefinieerd worden die niet vertellen wát comspec moet doen maar of het op een andere (afwijkende) manier moet gebeuren, omdat het erg specifiek is, hier een kopie uit het Bash Manual.:

     bashdefault
         Perform the rest of the default Bash completions if the 
         compspec generates no matches. 
     default
         Use Readline's default filename completion if the compspec
         generates no matches.
     dirnames
         Perform directory name completion if the compspec generates no matches.
     filenames
         Tell Readline that the compspec generates filenames, so it can perform
         any filename-specific processing (like adding a slash to directory names
         quoting special characters, or suppressing trailing spaces). 
         This option is intended to be used with shell functions specified

De origineel, waarin ook andere 'modifiers' zijn beschreven, is hier te vinden.