在 bash 中,我相信可以在终端上为特定于被调用的可执行文件的术语启用选项卡完成。
例如,给定一个带有有效参数 {cake、carrot、banana} 的可执行文件“eat”,输入 'eat car' 应该完成为 'eat carrot'。
我相信这是可能的,因为我已经看到它使用“ant”选项卡完成其目标(尽管我不知道这是如何设置的)。
如何实现这种行为?
在 bash 中,我相信可以在终端上为特定于被调用的可执行文件的术语启用选项卡完成。
例如,给定一个带有有效参数 {cake、carrot、banana} 的可执行文件“eat”,输入 'eat car' 应该完成为 'eat carrot'。
我相信这是可能的,因为我已经看到它使用“ant”选项卡完成其目标(尽管我不知道这是如何设置的)。
如何实现这种行为?
这是通过脚本完成的/etc/bash_completion.d/
,如果您想为可执行文件编写自己的完成支持,这里有一个教程可以帮助您入门。
如果您只需要使行为适用于常见的可执行文件,那么您的 Linux 发行版可能有一个bash-completion包可用,它支持常见的命令。
这与文件名通配符非常相似,shell 将尝试根据通配符自动完成……例如……
回声富*
将列出当前目录中以 'foo' 开头的所有文件... bash shell 将通配符通配并扩展为文件列表...
MSDOS 有一个类似的概念,虽然它在运行时没有明确链接,但我说的是旧的 Turbo C 东西,当通配符通配符通过与 'wildargs.obj' 链接激活时(如果我没记错的话),在内部,该代码将遍历目录并根据通配符模式匹配扩展列表。
在 Linux/*nix 领域中,通配符是标准的,但是,您不能手动点击序列 Tab 键来进行模式匹配或完成......因为不同的终端可能会以不同的方式翻译 Tab 键,当然也有不同的处理方式......