Подтвердить что ты не робот

Bash завершение для определенных типов файлов в специальном каталоге

У меня есть список профилей унисона, который существует в ~/.unison/*.prf.

Я хотел бы иметь завершение bash, чтобы при вводе unison или unison-gtk и нажатии вкладки он перечислил файлы .prf из этой папки без части .prf.

Возможно, пример будет более ясным:

$ ls ~/.unison/*.prf
default.prf dot-mozilla.prf to-desktop.prf

$ cd  ~  # just to show you don't have to be in the ~/.unison folder
$ unison to<tab>
$ unison to-desktop

Я предвидел необходимость этого и для другого инструмента, поэтому было бы удобно, если бы были части, которые можно было повторно использовать.

4b9b3361

Ответ 1

Если вы используете debian/ubuntu или, возможно, другие дистрибутивы GNU/Linux, должны быть примеры этого типа завершения в каталоге /etc/bash _completion.d/. Вот пример того, как вы можете установить завершение script для унисона:

have unison &&
_unison_show()
{
        local cur

        COMPREPLY=()
        cur=${COMP_WORDS[COMP_CWORD]}
        COMPREPLY=($( compgen -W "$(for x in ~/.unison/*.prf; do echo $(basename ${x%.prf}); done)" -- $cur ) )
}
complete -F _unison_show unison