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或其本机完成混淆)有时很难预测。
- 某些命令专门设置为从不完成文件,例如
cd
某些 - 命令会拒绝完成某些文件名,因为bash_completion没有意识到程序会处理它们,例如
mplayer
。 - 有些命令只是有问题,尤其是当路径包含空格和其他字符时,例如
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
,如错误链接所示。