我有一个自定义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甚至可以做到这一点。
先谢谢了。
答案 0 :(得分:0)
如果您不介意使用外部工具来模拟键盘输入(例如xdotool
),请尝试将其添加为完成功能的第一行:
(( COMP_CWORD > 1 )) && xdotool key Return
如@RandomUser所述,完成执行命令是意外行为。举例来说,请参见:echo oops; wonder audit <tab><tab>
,并想象用rm -rf *
而不是echo
。考虑简单地停止完成以指示wonder
仅接受一个参数:
(( COMP_CWORD > 1 )) && return