Auto-complete command line arguments

Régis B. picture Régis B. · Sep 11, 2010 · Viewed 29.8k times · Source

In bash, executables such as mplayer and imagemagick's "convert" have a cool auto-complete functionality on their command line arguments. For instance, if I type

mplayer <tab><tab>

in one of my video folders, then mplayer will list all media files located in that folder, and only the media files.

Similarly, if I type

convert -<tab><tab>

then I will see all the possible options of the convert script, which is great.

My question is how to achieve a similar functionality, using bash, ruby or python scripts?

Answer

Andy picture Andy · Sep 11, 2010

This is an example of BASH's smart completion. A basic description is here, a guide to writing your own extensions is here and another (Debian-based) guide is here. And here's a fuller featured introduction to the complete command (the command that facilitates this behaviour).