использование bash_completion с помощью инструмента cli
У меня есть специальный инструмент 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
Я хочу, когда я использую опцию tools from wonder:
$ wonder tools [tab] [tab]
Я хочу [Tab] [Tab], чтобы заставить войти на CmdLine
Как я могу отредактировать файл bash_completion для удивления, чтобы достичь этого.
Возможно ли это с помощью bash_completion.
Заранее спасибо.
Если вы не возражаете использовать внешние инструменты для имитации ввода клавиатуры (например, xdotool
), попробуйте добавить это как первую строку функции завершения:
(( COMP_CWORD > 1 )) && xdotool key Return
Как отмечено @RandomUser, выполнение выполнения команды является неожиданным поведением. См. Например: echo oops; wonder audit <tab><tab>
echo oops; wonder audit <tab><tab>
и представьте rm -rf *
вместо echo
. Рассмотрим просто прекращение завершения, чтобы указать, что wonder
принимает только один аргумент:
(( COMP_CWORD > 1 )) && return