Я пытаюсь написать функцию завершения, которая игнорирует имена файлов, заканчивающиеся на *.bak
, а также каталоги с именем backup
. Помимо этого, он должен работать, как и по умолчанию для завершения Readline (например, тот, который используется для команды ls
). Вот моя первая попытка:Как сделать завершение bash игнорировать определенные каталоги?
$ cat setup.sh
_compTest() {
local cur
FIGNORE='bak:backup'
cur="${COMP_WORDS[$COMP_CWORD]}"
compopt -o filenames
COMPREPLY=($(compgen -f "$cur"))
}
complete -F _compTest aaa
После источников:
$ . setup.sh
Я могу напечатать
$ aaa <tab><tab>
и получить список завершающего за исключением *.bak
файлов, но, к сожалению, не backup
каталогов.
Как продлить эту функцию, чтобы исключить также каталоги backup
из списка завершений?
ли 'GLOBIGNORE = backup' помочь? Кроме того, установка таких переменных, как это, истекает в основной сеанс оболочки, не так ли? –