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


24

Ubuntu中的Bash如何知道工具的特定动作列表?

例如,如果我键入apt-get和tab两次,我只会看到删除,更新,升级... etc,但是看不到其他命令或当前目录中文件的操作。

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


1
我从您的标题和标签中删除了“ ubuntu”,因为作为一个更一般的问题,它会更好(答案并非特定于任何发行版)。
goldilocks 2014年

1
很好的问题,我经常想知道这个问题,但是从来没有花时间去查找它。
akatakritos

Answers:


25

它使用bash v4的完成功能来执行此操作。的完成代码apt-getbash-completion软件包提供,位于/usr/share/bash-completion/completions/apt-get。已完成但不属于基本bash-completion软件包的应用程序将其完成脚本放在中/etc/bash_completion.d

完成是通过采购加载的/etc/bash_completion。具体执行的位置将取决于Debian或Ubuntu版本。反过来,这将提供/usr/share/bash-completion/completions和中的所有内容/etc/bash_completion.d


谢谢,这可以解释。因此,实现不仅从Debian到Ubuntu,而且在同一发行版的每个版本中都不同?
Amged Rustom 2014年

1
@Amgad在所有发行版中,其工作方式相同。唯一的区别是文件的位置,也许还有一些默认设置。
吉尔(Gilles)'所以
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.