Генерация автодополнений в в командной строке (bash_completion)

Предположим у нас есть несколько аргументов(ключей) для локального скрипта ./local.sh

Usage: ./local.sh [--build|--down|--rebuild|--dump|--restore-dump|--clean|--help]

Создадим простенький конфиг bash_completion для этого скрипта чтобы по tab нажатию получать автодополнения наших ключей.
Для начала установим необходимый пакет

sudo apt update && sudo apt install bash-completion

Создаем файлик /etc/bash_completion.d/local с содержимым

_local_completions()
{
    COMPREPLY=()
    local cur="${COMP_WORDS[COMP_CWORD]}"
    local opts="--build --down --rebuild --dump --restore-dump --clean --help"

    # Генерация возможных завершений
    COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
    return 0
}

# Регистрация функции автодополнения для скрипта
complete -F _local_completions ./local.sh

После перезапуска оболочки, автодзавершения будут работать для данного скрипта. Данную функцию можно опционально добавить и в .bashrc

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *