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

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

好的,我的一所大学刚刚告诉我你可以做到

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

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

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

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

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

答案1

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

在文件 /etc/bash.bashrc 中,你会发现一个段落,像这样或类似于这样:

# 在交互式 shell 中启用 bash 补全
#如果 !shopt -oq posix; 然后
# 如果 [ -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。我知道他们支持它 ;-)

答案2

我发现我的电脑发生这种情况是因为bash-completion出于某种原因没有安装。所以这个修复了它(12.04):

sudo apt-get install bash-completion

答案3

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

sudo apt-get install --reinstall bash-completion

答案4

另一个问题可能是失败apt-get update。删除错误的源并运行后apt-get update,我的自动完成功能恢复了。

相关内容