Understand `compgen` builtin command

Options for compgen command are the same as complete, except -p and -r. From compgen man page:

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

For options [abcdefgjksuv]:

  • -a means Names of alias
  • -b means Names of shell builtins
  • -c means Names of all commands
  • -d means Names of directory
  • -e means Names of exported shell variables
  • -f means Names of file and functions
  • -g means Names of groups
  • -j means Names of job
  • -k means Names of Shell reserved words
  • -s means Names of service
  • -u means Names of userAlias names
  • -v means Names of shell variables

You can see complete man page here.


At O'Reilly there is a book (bash Quick Reference by Arnold Robbins) that also has the hint form compgen options being described at complete. Going for the complete documentation gives a few other options than listed above. They might not be related to a current versions, BUT there are options no longer or not described in the current version docs.

As of now I have seen on the web these upper case options being used for invocation of compgen or mentioned in complete docs!

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 = The action may be one of the following to generate a list of possible completions: (see links)
  • -C command = Run command in a subshell and use its output as the list of completions.
  • -F function = Run shell function in the current shell. Upon its return, retrieve the list of completions from the COMPREPLY array.
  • -G globpat = The filename expansion pattern globpat is expanded to generate the possible completions.
  • -P prefix = prefix is added at the beginning of each possible completion after all other options have been applied.
  • -S suffix = suffix is appended to each possible completion after all other options have been applied.
  • -W wordlist = The wordlist is split using the characters in the IFS special variable as delimiters, and each resultant word is expanded. The possible completions are the members of the resultant list which match the word being completed.
  • -X filterpat = filterpat is a pattern as used for filename expansion. It is applied to the list of possible completions generated by the preceding options and arguments, and each completion matching filterpat is removed from the list. A leading ‘!’ in filterpat negates the pattern; in this case, any completion not matching filterpat is removed.

A rather exhaustive looking version of the documentation can be found in Programmable Completion Builtins.

As both commands are built in command, the official documentation is on your local man page for bash. Use the search option for locating the relevant parts in it. Sorry, but the layout looks somewhat broken (usability reduced in the generated layout) in either view variant, even on the internet services.