bash-completion: the greatest things since bash completion
Please, if you have not done it, read the Debaday article. Thank you.
This article of debaday site, by “Andre Masella”, were posted at https://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:
|
|
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 rmmod
, iwconfig
, ifup
, and 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 and
Ubuntu. If it isn’t available, it
is very easy to install from
source.