Tab 补全对命令不起作用

Tab 补全对命令不起作用

我尝试在 Ubuntu 11.04 Beta 1 中使用 Tab 补全命令,并运行所有最新更新,但似乎不起作用。(尽管已安装 bash-completion 软件包)

Tab 补全仅对目录或文件有效。

知道在哪里挖掘吗?

答案1

检查你的 .bashrc 中是否有以下片段(默认情况下应该存在)

# 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 [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

答案2

除了修改/etc/bash.bashrc文件(参见其他答案)之外,您可能还需要安装bash-completion包。

检查/etc/bash_completion文件是否存在。如果不存在:

sudo apt-get install bash-completion

(在我安装 Debian 7 时它最初没有被安装)

答案3

我认为我还应该添加以下关于 bash 完成失败的额外解释 - 它对于评论来说太长了,并且可能对那些对 bash 完成有问题的人来说很有用,因为大概这是所有重复项所涉及的“一般”规范问题。

即使你的.bashrc(如上面的答案所示)中存在相应的行并且安装了包,如果你的或中有或bash-completion,bash 完成仍然会出现故障。shopt -s nullglobshopt -s failglob.bashrc.bash_aliases

以下场景已对所有用户自定义项进行了测试.bashrc,为了进行公平测试,已删除所有自定义项,并已安装.bash_aliases适当的 bash 完成行。.bashrcbash-completion

1) 第一种情况是当您的或shopt -s failglob中。.bashrc.bash_aliases

当尝试分别制表完整目录和文件时,将出现以下错误:

cd Dbash: no match: "${COMP_WORDS[@]}"  
cat pabash: no match: words[0]=${!ref}${COMP_WORDS[i]}

然而,命令仍然会成功完成。

2)shopt -s nullglob启用后,尝试使用 Tab 键完成目录或文件将导致列出所有内容,而不会完成:

cd Do
.adobe/                  .gimp-2.6/               Podcasts/
.aptitude/               .gnome2/                 Public/
.audacity-data/          .gnome2_private/         .pulse/
............

我在这里缩短了列表,因为它太长了,没有必要全部重复。

但命令完成仍然有效。

因此,只需删除shopt -s failglobshopt -s nullglob也可以解决 bash 完成错误的问题,假设您在和中.bashrc安装了适当的行bash-completion

答案4

更新至 Ubuntu 14.04.01

检查你的 .bashrc 中是否有以下片段(默认情况下应该存在)

sudo vim /etc/bash.bashrc(输入“i”编辑文件)

    # enable bash completion in interactive shells
    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

取消注释上面 7 行

保存文件“esc + w + q + enter”

重启 bash

执行 bash

相关内容