Bash
恢復預設完成
我
compgen
在$COMP_WORD
等於1時使用,現在我想在其他情況下恢復預設完成,現在我有,
_rr() { case $COMP_CWORD in 1) COMPREPLY=($(compgen -W "A B" "${COMP_WORDS[$COMP_CWORD]}")) ;; esac } complete -F _rr rr
現在當
$COMP_CWORD
不是 1 時,我沒有完成文件/目錄,這是我需要的預設完成。
${COMP_WORDS[$COMP_CWORD - 1]}
此外,只有A
在這種最小情況下,我才需要啟用完成。
我假設在您的實際情況下,您也想做其他事情,因此繼續使用
case
構造(儘管在這個最小的情況下,if
構造就足夠了):_rr() { cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD - 1]}" case "${COMP_CWORD}" in 1) COMPREPLY=($(compgen -W "A B" "${cur}")) ;; esac case "${prev}" in A) COMPREPLY=($(compgen -f "${cur}")) ;; esac } complete -F _rr rr
-f
選項的文件compgen
可在Bash 參考手冊中找到(向下滾動到file
,在內置-A action
描述的小節下)。complete