# Complete group names for first non-option chgrp(1) argument _chgrp() { local i for ((i = 1; i < COMP_CWORD; i++)) ; do case ${COMP_WORDS[i]} in -*) ;; *) return 1 ;; esac done while read -r group ; do COMPREPLY[${#COMPREPLY[@]}]=$group done < <(compgen -A group -- "$2") } complete -F _chgrp -o bashdefault -o default chgrp