Bash will not auto-complete (Tab) with files
Asked Answered
S

3

10

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?

Semeiology answered 26/2, 2014 at 6:13 Comment(2)
Try also zsh. I love its completion abilities.Wholism
@BasileStarynkevitch: Thank you for the suggestion. I've just been using bash so far, but I'll look into zsh soon in the future!Semeiology
I
22

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.

Idiotism answered 26/2, 2014 at 6:57 Comment(5)
Using bash's native completion worked for me! Odd that Tab somehow does not do the same thing, seeing as it's not remapped to something else. For now, this is solved for me, thank you all for taking your time writing your answers.Semeiology
@Semeiology do you have an example of a command line where you're hitting tab and it's not completing what you expect? Keep in mind that the command itself and the parameters are relevant too, since bash_completion uses them to determine what to complete.Idiotism
+1 for "complete -r". Cygwin bash stopped autocompleting with tab when adding \ before a space and this did the trick.Donnelldonnelly
You've cited mplayer as an example of broken behaviour, but your solution, complete -r mplayer does not work.Prominent
@Prominent Do you have a test case?Idiotism
C
2

.bashrc file seems ok so the problem probably is in one of the bash_completion files.

I suggest you backup the files and try to replace them with these:

for /etc/bash_completion:

http://pastebin.com/0HWHsbyR

for /usr/share/bash-completion/bash_completion:

http://pastebin.com/c49KrbXT

that are the standard completion files for ubuntu 13.10. Restart the console before checking if it worked.

Commensal answered 26/2, 2014 at 6:42 Comment(1)
Jus tried this, and it didn't really affect anything, as far as I can tell. I also tried "reinstalling" (purged and install) bash-completion to no avail.Semeiology
S
0

One possible cause for this is a file named !. Some default bash-completion setups have a bug when such a file exists. You can remove the file or patch /usr/share/bash-completion/bash_completion as shown in the bug link.

Sera answered 23/1, 2018 at 13:30 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.