Bash不会自动完成(Tab)文件

时间:2014-02-26 06:13:32

标签: linux bash ubuntu terminal bash-completion

bash中的自动完成(使用Tab键)适用于文件夹,但不适用适用于文件。

  • 我正在运行Ubuntu 13.10
  • 我没有触及 .bashrc 文件

这是 .bashrc 文件底部的外观,安装和更新了 bash-completion 部分:

# 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

有什么想法吗?

3 个答案:

答案 0 :(得分:13)

第三方“bash_completion”包(不要与bash或其原生完成混淆)有时很难预测。

  1. 某些命令专门设置为永远不会完成文件,例如cd
  2. 有些命令会拒绝完成某些文件名,因为bash_completion没有意识到程序会处理它们,例如mplayer
  3. 有些命令只是错误,特别是当路径包含空格和其他字符时,例如scp
  4. 如果您遇到bash_completion无用的情况,可以使用M-/(又名Alt + /)来改为使用bash的本机文件名。

    如果命令经常给您带来麻烦,您可以使用complete -r thatcommand末尾的.bashrc为此命令禁用bash_completion。

答案 1 :(得分:2)

.bashrc文件似乎没问题所以问题可能出在其中一个bash_completion文件中。

我建议您备份文件并尝试将其替换为:

/ etc / bash_completion:

http://pastebin.com/0HWHsbyR

/ usr / share / bash-completion / bash_completion:

http://pastebin.com/c49KrbXT

这是ubuntu 13.10的标准完成文件。在检查控制台是否有效之前重新启动控制台。

答案 2 :(得分:0)

可能的原因是a file named !。当存在此类文件时,某些默认bash-completion设置有a bug。您可以删除文件或修补程序/usr/share/bash-completion/bash_completion,如错误链接中所示。