2
我正在尝试编写一个完成函数,忽略以*.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'帮助吗?同样设置那些变量会流入主shell会话中,不是吗? – 2014-11-20 17:27:47