命令行工具如何拥有自己的自动完成列表?

命令行工具如何拥有自己的自动完成列表?

Ubuntu 中的 Bash 如何知道工具的具体操作列表?

例如,如果我输入apt-get和 tab 两次我只看到删除、更新、升级...等,但看不到另一个命令或当前目录中的文件的操作。

我正在用 Go 开发一个命令行工具,并希望为支持它的发行版提供此功能。

答案1

它使用 bash v4 的完成功能来完成此操作。的完成代码apt-get由包提供bash-completion并位于/usr/share/bash-completion/completions/apt-get。已完成但不属于基础bash-completion包一部分的应用程序将其完成脚本放置在/etc/bash_completion.d.

完成的内容通过 sourceing 加载/etc/bash_completion。具体执行位置因 Debian 或 Ubuntu 版本而异。这反过来又会来源/usr/share/bash-completion/completions和中的所有内容/etc/bash_completion.d

相关内容