Bash 不会自动完成(制表符)文件



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

  • 我正在运行 Ubuntu 13.10
  • 我还没有碰过我的 .bashrc 文件

这是 .bashrc 文件底部的外观,其中 bash 完成部分已安装并更新:

# 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

有什么想法吗?

第三方"bash_completion"包(不要与bash或其本机完成混淆)有时很难预测。

  1. 某些命令专门设置为从不完成文件,例如cd
  2. 某些
  3. 命令会拒绝完成某些文件名,因为bash_completion没有意识到程序会处理它们,例如mplayer
  4. 有些命令只是有问题,尤其是当路径包含空格和其他字符时,例如 scp .

如果您遇到bash_completion没有帮助的情况,您可以使用M-/(又名Alt + /)来代替使用 bash 的本机文件名补全。

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

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

我建议您备份文件并尝试用这些文件替换它们:

对于/etc/bash_completion:

http://pastebin.com/0HWHsbyR

对于/usr/share/bash-completion/bash_completion:

http://pastebin.com/c49KrbXT

这是 Ubuntu 13.10 的标准完成文件。在检查它是否正常工作之前重新启动控制台。

造成这种情况的一个可能原因是一个名为 ! 的文件。当存在此类文件时,某些默认bash-completion设置存在错误。您可以删除文件或修补程序/usr/share/bash-completion/bash_completion,如错误链接所示。

相关内容

  • 没有找到相关文章

最新更新