Bash
如何自定義 bash 自動完成以列出另一個目錄中的文件
如何自定義 bash 自動完成以僅針對一個腳本選項(-seq)列出另一個目錄中的文件,對於其他腳本選項(-speed,-define)預設自動完成是可以的,這就是我所擁有的
export files=`ls /home/tests/` echo $files #debug _xtest () { local cur COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]} #case "$cur" in COMPREPLY=( $(compgen -W "${files}" -- ${cur}) ) # esac return 0 } complete -F _xtest -o filenames xtest
如何為其他選項啟用預設 bash 完成?
應該使用 prev 而不是 cur :
_xtest () { local prev COMPREPLY=() prev=${COMP_WORDS[COMP_CWORD-1]} case "$prev" in -seq ) COMPREPLY=( $(compgen -W "${files}" -- ${cur}) ) ;; esac return 0 } complete -F _xtest -o filenames xtest