Answers:
根据命令:
/etc/bash_completion.d/*
位置(或某些系统上的其他位置)找到某些命令的功能。这些功能与注册的内置的(如告诉Bash调用函数时,按上一个命令)。他们使用内置命令告诉bash“这是可能的补全”。complete
complete -F _find find
_find
Tabfind
compgen
--help
并解析输出。此类命令可以通过complete
内置命令注册complete -F _longopt ls
。_longopt
实际上是完成生成函数,它恰好解析命令的输出而不是使用固定列表。(还有其他更专业的完成功能可以解析命令的输出以生成可能的完成;请/etc/bash_completion.d/*
查看示例。)complete
内置有该选项,例如-A
用于别名。bash完成包在Debian和Ubuntu中提供了对bash完成的支持。您通常还需要在bash完成文件中取消注释/etc/bash.bashrc
和/或.bashrc
提供源。以下是来自/etc/bash.bashrc
:
# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
为此工作。我通常都不会评论它。在Debian中处理交互式/登录Shell有点混乱。
类似的注释大概适用于其他发行版,尽管默认情况下它们可能启用源。