在cli工具中使用bash_completion

时间:2018-07-26 16:16:20

标签: bash completion

我有一个自定义cli工具,我想使用bash_completion进行设置,但希望[tab] [tab]在cmdline上执行回车操作。

我的bash_completion文件惊奇的是:

_wonder()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    COMPREPLY=( $(compgen -W "audit nodes tools create debug delete update" -- $cur) )
}
complete -F _wonder wonder

当前:

$ wonder [tab] [tab]

返回:

ip-10-99-18-249:loco_dsl jasonparmar$ wonder
audit   create  debug   delete  nodes   tools   update

我想要的是当我使用来自奇迹的工具选项时

$ wonder tools [tab] [tab] 

我希望[tab] [tab]强制在cmdline上输入

我如何编辑我的bash_completion文件以实现此目的呢?

使用bash_completion甚至可以做到这一点。

先谢谢了。

1 个答案:

答案 0 :(得分:0)

如果您不介意使用外部工具来模拟键盘输入(例如xdotool),请尝试将其添加为完成功能的第一行:

(( COMP_CWORD > 1 )) && xdotool key Return

@RandomUser所述,完成执行命令是意外行为。举例来说,请参见:echo oops; wonder audit <tab><tab>,并想象用rm -rf *而不是echo。考虑简单地停止完成以指示wonder仅接受一个参数:

(( COMP_CWORD > 1 )) && return