Please, if you have not done it, read the Debaday article. Thank you.
This article of debaday site, by "Andre Masella", were posted at "http://debaday.debian.net/2009/03/01/bash-completion-the-greatest-things-since-bash-completion/":http://debaday.debian.net/2009/03/01/bash-completion-the-greatest-things-since-bash-completion/ on 01/03/2009.
Pressing the tab key in bash to auto-complete a file name is one of the most time saving tricks especially when dealing with very long file names. Unfortunately, file name completion is not always the right behavior. Take Subversion for example. The first argument to svn is the sub-command to use. The file name is also restricted:
svn add only takes files not under revision control and
svn rm only takes files that are under revision control.
This is where the bash-completion package steps in. After installing it with a quick
apt-get install bash-completion, a few lines need to be uncommented in
sudo vim /etc/bash.bashrc and the shell restarted. After that, try this:
$ svn <TAB><TAB> add cl diff list move propdel rename unlock annotate cleanup export lock mv propedit resolve update blame co -h log pdel propget resolved --version cat commit help ls pedit proplist revert changelist copy --help merge pget propset rm checkout cp import mergeinfo plist pset status ci delete info mkdir praise remove switch
Ta-da! Smarter completion for subversion.
bash-completion will alter the behavior of most commands to limit the display to relevant files. For example, mpg321 will only display MP3 files in the list. Programs like
lvm will display relevant choices that are not files at all. Even bash’s
fg and @bg@ will now tab-complete with job identifiers.Completion for man is useful as it will auto-complete only man pages that exist and allows you to incrementally narrow your search by providing the beginning of the man page name, just like with regular files.
Occasionally, it doesn’t behave as expected. Particularly, sometimes a file with the "wrong" extension will be filtered out by bash-completion. For example, if you save an image for certain Internet forums, the file will sometime lack an extension. bash-completion will then filter out that file because it does not have the right extension. This can also happen if the capitalization is unusual. For example, bash-completion will suggest files that end in .mp3 or .MP3 for mpg321, but not .Mp3. In that case, either rename the file or insert # at the beginning of the line. The # makes bash think this line is a comment and bash-completion returns to regular file name completion. Once finished, remove the # and run the command.
bash-completion is available in "Debian":http://packages.debian.org/bash-completion and "Ubuntu":http://packages.ubuntu.com/bash-completion. If it isn’t available, it is very easy to install from "source":http://www.caliban.org/bash/index.shtml#completion.