当前位置: 首页>>技术问答>>正文


auto-completion不适用于“sudo apt-get安装”

, ,

问题描述

好吧,我的一所大学只是向我展示了你能做到的

sudo apt-get install <type first letters of package> <TAB>

那它是auto-completes包的名称。仅举例……

sudo apt-get install ged<TAB>产生sudo apt-get install gedit

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

我怎么解决这个问题?我必须安装包吗?我的大学告诉我,他没有安装任何额外的东西。

最佳解决方案

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

在文件/etc/bash.bashrc中,您将找到一个段落,如下所示或类似于此:


# 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

(这个例子来自debian,但可能与Ubuntu版本相同)

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

我相信apt-get完成是其中之一。如果没有,你可以考虑切换到zsh。我知道他们支持它;-)

次佳解决方案

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

sudo apt-get install bash-completion

第三种解决方案

安装Ubuntu 15.10后我遇到了同样的问题。重新安装bash-completion为我工作:

sudo apt-get install --reinstall bash-completion

第四种方案

在Ubuntu它也开始激怒我,所以我只是(在终端):

gksu gedit /etc/bash.bashrc

并改变了

# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#    . /etc/bash_completion
#fi

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

现在它的工作方式就像我想再次…… HTH 🙂

它与PaulHänsch给出的例子不同,我来自ubuntu 12.04。我不确定Pauls版本会做什么,也许他可以详细说明一下?

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2334.html,未经允许,请勿转载。