Я пытаюсь настроить завершение bash для написанного мной служебного скрипта, поэтому я добавил следующий скрипт в /etc/bash_completion.d:
_mcd()
{
local cur words
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
words=`mcd-completion-words`
COMPREPLY=( $(compgen -W "${words}" -- "$cur") )
return 0
}
complete -F _mcd mcd
Сценарий mcd-completion-words
программно находит доступные операторыдля команды.Когда я перезапускаю bash (или создаю исходный код скрипта), я могу успешно завершить табуляцию, но если я это сделаю, я больше не смогу вернуться назад после завершенного символа.
Кроме того, если я попытаюсь перечислить все опции (например,Я пытаюсь завершить табуляцию без слов), bash добавляет к команде табуляцию, которую я тоже не могу вернуть.
Как сделать так, чтобы bash имитировал нормальное поведение завершения файла?Любая помощь приветствуется.Спасибо!
Вот сокращенный тестовый пример для mcd-creation-words, который все еще демонстрирует то же поведение.Любопытно, что дело Денниса также работает и для меня (например, при подстановке словами = «один два три»).
#!/usr/bin/env php
<?php
print "one two three four five six seven eight nine";