如何实现动态bash自动补全

如何实现动态bash自动补全

我制作了一个列出可用项目的脚本。你可以开始通过输入script start <project>.

现在启用自动完成功能会很棒,因此如果您输入start Organ并按TAB,它会自动完成为start Organisation

困难的部分是项目列表是动态的。可用项目列表经常变化,并且所有用户都有不同的可用项目。

我的想法是将可用项目保存到 json 文件中,并使用该文件启用自动完成功能。我知道我必须在 中创建一个文件/etc/bash_completion.d/,但我不知道如何实现取决于可用项目的“动态”自动完成。

答案1

假设您有一个名为 的脚本output_projects,列出了所有可用的项目。现在从 bash 函数调用它:

_list_projects() {
  ./output_projects
}

现在将其绑定到start我们的示例中,如下所示:

complete -F __list_projects start

基本上,每次按<tab>bash 都会执行该函数并获得可用项目的新列表。

测试于:

$ bash --version | head -1
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)

这解决了你的问题吗?如果不是,请重新表述并澄清您正在寻找的内容。

相关内容