Bash Complete — 单击文档

来自菜鸟教程
Click/docs/6.x/bashcomplete
跳转至:导航、​搜索

Bash 完成

2.0 版中的新功能。


从 Click 2.0 开始,任何 Click 脚本都内置了对 Bash 完成的支持。 对于此完成何时可用有某些限制,但在大多数情况下它应该可以正常工作。

限制

Bash 补全仅在正确安装脚本且不通过 python 命令执行时才可用。 有关如何执行此操作的信息,请参阅 Setuptools 集成 。 此外,Click 目前仅支持 Bash 的补全。

目前,Bash 补全是一个不可定制的内部功能。 这在未来的版本中可能会放宽。


它完成了什么

一般来说,Bash 补全支持会补全子命令和参数。 子命令总是被列出,而参数只有在至少提供了一个破折号时才列出。 例子:

$ repo <TAB><TAB>
clone    commit   copy     delete   setuser
$ repo clone -<TAB><TAB>
--deep     --help     --rev      --shallow  -r

激活

为了激活 Bash 补全,您需要通知 Bash 补全可用于您的脚本,以及如何完成。 任何 Click 应用程序都会自动提供支持。 其工作的一般方式是通过一个名为 _<PROG_NAME>_COMPLETE 的魔法环境变量,其中 <PROG_NAME> 是您的应用程序可执行文件的大写名称,破折号由下划线代替。

如果您的工具名为 foo-bar,则魔法变量名为 _FOO_BAR_COMPLETE。 通过使用 source 值导出它,它会吐出可以简单激活的激活脚本。

例如,要为您的 foo-bar 脚本启用 Bash 补全,您需要将以下内容放入 .bashrc

eval "$(_FOO_BAR_COMPLETE=source foo-bar)"

从这一点开始,您的脚本将启用 Bash 完成。


激活脚本

上面的激活示例将始终在启动时调用您的应用程序。 如果您有许多应用程序,这可能会显着减慢 shell 激活时间。 或者,您也可以发送一个包含该内容的文件,这正是 Git 和其他系统正在做的。

这可以很容易地完成:

_FOO_BAR_COMPLETE=source foo-bar > foo-bar-complete.sh

然后你会把它放到你的 bashrc 中:

. /path/to/foo-bar-complete.sh