问题描述
好吧,我的一所大学只是向我展示了你能做到的
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版本会做什么,也许他可以详细说明一下?