Search code examples
linuxbashubuntuterminalbash-completion

Bash will not auto-complete (Tab) with files


Auto-completion in bash (with Tab) works on folders, but not with files.

  • I'm running Ubuntu 13.10
  • I haven't touched my .bashrc file

This is how the bottom part of the .bashrc file looks, with the bash-completion part installed and updated:

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Any ideas?


Solution

  • The third party "bash_completion" package (not to be confused with bash or its native completion) can sometimes be hard to predict.

    1. Some commands are specifically set up to not never complete files, like cd
    2. Some commands will refuse to complete certain filenames, because bash_completion doesn't realize the program handles them, like mplayer.
    3. Some commands are just buggy, especially when paths contain spaces and other characters, like for scp.

    If you're ever in a situation where bash_completion isn't being helpful, you can use M-/ (aka Alt + /) to use bash's native filename completion instead.

    If a command is frequently giving you trouble, you can disable bash_completion for this command using complete -r thatcommand at the end of your .bashrc.