自动完成对“sudo apt-get install”不起作用

WG-*_*WG- 38 bash auto-completion

好吧,我的一所大学刚刚向我展示了你可以做到

sudo apt-get install <type first letters of package> <TAB>
Run Code Online (Sandbox Code Playgroud)

它会自动完成包的名称。仅举个例子...

sudo apt-get install ged<TAB> 结果是 sudo apt-get install gedit

现在我尝试这样做,但这对我不起作用。

我该如何解决这个问题?我必须安装一个包吗?我的大学告诉我他没有为此安装任何额外的东西。

Pau*_*sch 50

Bash 确实支持更多种类的自动补全,而不仅仅是文件名补全。

在文件 /etc/bash.bashrc 中,你会找到一段,像这样或类似这样:

# 在交互式 shell 中启用 bash 完成
#如果 !shopt -oq posix; 然后
# if [ -f /usr/share/bash-completion/bash_completion ]; 然后
# . /usr/share/bash-completion/bash_completion
# elif [ -f /etc/bash_completion ]; 然后
# . /etc/bash_completion
# fi
#fi

(此示例来自 debian,但可能与 Ubuntu 版本相同)

通过删除#每行开头的字符,您可以使许多额外的完成规则生效。(不要删除第一行的#...这真的是一个评论;-)

我相信 apt-get 完成是通过这个启用的。如果没有,您可以考虑切换到 zsh。我知道他们支持它;-)


d_i*_*ble 26

我发现在我身上发生这种情况是因为由于bash-completion某种原因没有安装。所以这修复了它(12.04):

sudo apt-get install bash-completion
Run Code Online (Sandbox Code Playgroud)


hg8*_*hg8 8

安装 Ubuntu 15.10 后我遇到了同样的问题。
重新安装bash-completion对我有用:

sudo apt-get install --reinstall bash-completion
Run Code Online (Sandbox Code Playgroud)