#bash #git #command-substitution
#bash #git #команда-подстановка
Вопрос:
Я создаю новую команду, и мне нужна функция завершения, чтобы, когда я нажимаю tab пару раз, это давало мне несколько альтернатив на выбор. Список альтернатив должен представлять собой ветви, доступные в репозитории git.
Я использовал complete -W $(git branch | grep -v '^*' | xagrs) my_command
, но это создает статический список один раз.bashrc «скомпилирован» и не является динамическим для каждого репозитория.
Также я нашел complete -c
, но это, похоже, не работает.
Есть идеи?
Ответ №1:
complete
имеет -F
аргумент, который позволяет вам генерировать complete из любой функции. Внутри этой функции запустите свою команду git branch | grep -v '^*'
и заполните COMPREPLY
соответствующим образом. В сети доступно множество руководств по написанию функций завершения bash — изучите их и напишите свои собственные функции для своих нужд.
Примечания: -W $(...)
— расширение без кавычек подвергается разделению на слова, поэтому вы эффективно работаете complete
с одним аргументом завершения. Обязательно изучите, какие, как и когда использовать кавычки в оболочке.