завершение bash для определенных типов файлов в специальном каталоге
-
03-07-2019 - |
Вопрос
У меня есть список профилей унисона, который существует в ~/.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
Я предвижу, что это понадобится и для другого инструмента, поэтому было бы удобно, если бы были детали, которые можно было бы использовать повторно.
Решение
Если вы используете debian/ubuntu или, возможно, другие дистрибутивы GNU/Linux, в вашем каталоге /etc/bash_completion.d/ должны быть примеры такого типа завершения.Вот пример того, как вы можете настроить сценарий завершения для унисона:
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
Не связан с StackOverflow