Bash 如何从特定于可执行文件的终端启用制表符完成

Bash 如何从特定于可执行文件的终端启用制表符完成,bash,terminal,tab-completion,Bash,Terminal,Tab Completion,在bash中,我认为可以在终端上为特定于被调用的可执行文件的术语启用制表符完成 例如,给定一个具有有效参数{cake,carrot,banana}的可执行文件“eat”,键入“eat car”应完成“eat car” 我相信这是可能的,因为我看到“ant”标签完成了它的目标(尽管我不知道这是如何设置的) 如何实现这种行为?这与文件名非常相似,在文件名中,shell将尝试基于全局通配符自动完成…例如 echo foo* 埃科富* 将列出当前目录中以“foo”开头的所有文件…bash shell将通

在bash中,我认为可以在终端上为特定于被调用的可执行文件的术语启用制表符完成

例如,给定一个具有有效参数{cake,carrot,banana}的可执行文件“eat”,键入“eat car”应完成“eat car”

我相信这是可能的,因为我看到“ant”标签完成了它的目标(尽管我不知道这是如何设置的)


如何实现这种行为?

这与文件名非常相似,在文件名中,shell将尝试基于全局通配符自动完成…例如

echo foo* 埃科富* 将列出当前目录中以“foo”开头的所有文件…bash shell将通配符全球化并将其扩展为文件列表

MSDOS有一个类似的概念,虽然它在运行时没有显式链接,但我说的是旧的TurboC东西,当通配符globbing通过链接“wildargs.obj”(如果我的内存没有问题)激活时,在内部,代码将遍历目录并根据通配符模式匹配扩展列表


在Linux/*nix中,globbing是标准的,但是,您不能手动点击sequence Tab键来进行模式匹配或完成…因为不同的终端可能会以不同的方式转换Tab键,当然也会以不同的方式处理它…

这是通过
/etc/bash_completion.d/
中的脚本完成的,如果您想为可执行文件编写自己的完成支持


如果您只需要让行为适用于常见的可执行文件,那么您的Linux发行版可能有一个支持常见命令的bash completion包。

不,对不起,这根本不是OP所要求的。