自定义 bash 选项卡完成

36 bash

我有cooltool带有选项列表的自定义控制台实用程序

fooOption
barOption
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能通过按 bashtab键来自动完成选项?

我的意思是用户输入

$ ./cooltool foo_
Run Code Online (Sandbox Code Playgroud)

然后按下tab。进而

$ ./cooltool fooOption _
Run Code Online (Sandbox Code Playgroud)

出现了。

dog*_*ane 44

最简单的方法是将以下内容添加到您的 .bashrc 中。

_cooltool()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    COMPREPLY=( $(compgen -W "fooOption barOption" -- $cur) )
}
complete -F _cooltool cooltool
Run Code Online (Sandbox Code Playgroud)

无论何时键入cooltool f[TAB][TAB]_cooltool()都会调用该函数。它将计算出您当前的部分单词是什么,然后计算compgen出哪些选项匹配。这些存储在一个名为的数组中COMPREPLY,然后显示出来。查看man completeman compgen了解详情。

对于一个不错的教程,请查看:编写自己的 Bash 完成函数


小智 7

您可能想要仔细查看系统上的 /etc/bash_completion.d 目录。

你也应该阅读这个介绍。介绍的第二部分是您需要的。


use*_*686 4

为 编写 bash 补全脚本cooltool。bash -completion包附带了许多流行程序的脚本,您可以将其用作示例。