Você pode usar uma função de conclusão personalizada como a seguinte:
_foo () {
local cur
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
k=0
i="/a/b/c" # the directory from where to start
for j in $( compgen -f "$i/$cur" ); do # loop trough the possible completions
[ -d "$j" ] && j="${j}/" || j="${j} " # if its a dir add a shlash, else a space
COMPREPLY[k++]=${j#$i/} # remove the directory prefix from the array
done
return 0
}
E, em seguida, registre a função a ser usada com seu comando foo
:
complete -o nospace -F _foo foo