использование bash_completion с помощью инструмента cli

68
2

У меня есть специальный инструмент 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.

Заранее спасибо.

спросил(а) 2018-07-26T19:16:00+03:00 2 года, 2 месяца назад
1
Решение
69

Если вы не возражаете использовать внешние инструменты для имитации ввода клавиатуры (например, 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

ответил(а) 2018-07-26T20:06:00+03:00 2 года, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема