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
Я предвидел необходимость этого и для другого инструмента, поэтому было бы удобно, если бы были части, которые можно было повторно использовать.
Ответы
Ответ 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