Linux Bash不会自动完成(选项卡)文件

Linux Bash不会自动完成(选项卡)文件,linux,bash,ubuntu,terminal,bash-completion,Linux,Bash,Ubuntu,Terminal,Bash Completion,bash中的自动完成(带选项卡)适用于文件夹,但不适用于文件 我正在运行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

bash中的自动完成(带选项卡)适用于文件夹,但不适用于文件

  • 我正在运行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

有什么想法吗?

.bashrc文件似乎还可以,所以问题可能出在其中一个bash_完成文件中

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

对于/etc/bash_完成:

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

这是ubuntu 13.10的标准完成文件。重新启动控制台,然后再检查它是否工作。

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

  • 有些命令专门设置为永远不完成文件,如
    cd
  • 有些命令会拒绝完成某些文件名,因为bash_completion没有意识到程序会处理它们,比如
    mplayer
  • 有些命令是错误的,尤其是当路径包含空格和其他字符时,如for
    scp
  • 如果您遇到bash_completion没有帮助的情况,可以使用
    M-/
    (又称
    Alt+/
    )来代替bash的原生文件名补全


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

    一个可能的原因是。当这样一个文件存在时,一些默认的
    bash完成设置就有了。您可以删除文件或修补程序
    /usr/share/bash completion/bash_completion
    ,如错误链接所示。

    也可以尝试。我喜欢它的完成能力。@BasileStarynkevitch:谢谢你的建议。到目前为止,我一直在使用bash,但我将在不久的将来研究zsh!Jus试过这个,据我所知,它并没有真正影响到任何事情。我还尝试了“重新安装”(清除并安装)bash完成,但没有成功。使用bash的本机完成对我来说很有效!奇怪的是,选项卡不知何故没有做同样的事情,因为它没有重新映射到其他东西。现在,这个问题对我来说已经解决了,谢谢大家花时间写下答案。@Finn你有没有一个命令行的例子,在这个命令行中,你点击了tab,却没有完成你期望的任务?请记住,命令本身和参数也是相关的,因为bash_completion使用它们来确定要完成的内容。+1表示“complete-r”。Cygwin bash在向空格前添加\时停止了使用tab自动完成,这就成功了。您已经引用了
    mplayer
    作为破坏行为的示例,但是您的解决方案,
    complete-r mplayer
    不起作用。@burito您有测试用例吗?