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