завершение bash для определенных типов файлов в специальном каталоге - PullRequest
12 голосов
/ 29 апреля 2009

У меня есть список унисон-профилей, который существует в ~/.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

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

1 Ответ

16 голосов
/ 29 апреля 2009

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...