Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Takes a Python list or dictionary input and automatically generates simple, yet functioning, bashcompletion code.
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information. First commit Allow configurable filenames Allow configurable filenames Match descriptions


python-bashcomplete takes:

  • Lists of strings and dictionaries, or
  • Nested dictionaries

and compiles simple, yet functional bashcomplete code for any program that invokes bashcomplete.BashComplete() with a list or dictionary.


pip install python-bashcomplete

Example structures

Autocompletes one level:

test = ['level1a', 'level1b']

Autocompletes two possibilities, both of which have sublevels:

test = {
    'level1a': ['1', '2', '3'],
    'level1b': ['4', '5', '6']

Autocompletes three possibilities, only two of which have sublevels:

test = [
        'level1a': ['1', '2', '3']
        'level1b': ['4', '5', '6']

Autocompletes only one level. Final string values are ignored:

test = {

Autocomplete with autogenerated words:

test = {
    'files': ['`ls -1`'],
    'devices': ['`ls -1 /dev`']


Add the following lines to your command-line program:

import bashcomplete

where test is your data structure. This will generate <filename>.bash_complete in your current folder using the filename of the executing program.

If you wish to constrain the autocomplete words to only what has been defined, use:

bashcomplete.BashComplete(test, constrain=True)

If you wish to create a .bash_complete file with another name use:

bashcomplete.BashComplete(test, filename='', output_filename='myprogram_py_cloudversion')


Use the generated <filename>.bash_complete by adding:

. /path/to/<filename>.bash_complete

to your .profile. From this point on, any run of <filename> will use the generated bash completion.

Something went wrong with that request. Please try again.