Take the tour ×  I'm trying to setup autocompletion for a
command, which takes only one parameter, a folder name,  In
/secure/kernel_builds/, I have the three following subfolder:
3.5.6/ 3.6.2/ source/  Now I want auto completion, that lists
all sub folder name possible, but not the one named source,
right now I'm using a pretty stupid way to do it, by checking if
the completion word is started with a number,      case
$COMP_CWORD in             if [[ "${COMP_WORDS[COMP_CWORD]}" =~
^[0-9] ]];then                 COMPREPLY=(
/secure/kernel_builds/"${COMP_WORDS[COMP_CWORD]}"* )
COMPREPLY=(
/secure/kernel_builds/"${COMP_WORDS[COMP_CWORD]}"[0-9]*/ )
COMPREPLY=( "${COMPREPLY[@]#/secure/kernel_builds/}" )
COMPREPLY=( "${COMPREPLY[@]%/}" )  Is there a better way of
doing so?  share|improve this question add comment  1 Answer
You can check in a loop for the strings you (don't) want:
declare -a accept declare -a reject for s in "${COMPREPLY[@]}";
do     if [[ "$s" =~ want ]];