Sua descrição parece estranha: se você obtiver apenas proj1
, como você sabe qual é o diretório pai dele?
De qualquer forma, para dar o que você pediu:
# for me, this takes a looooooong time [1]. Do it once and cache it
mapfile -t _all_dir_names < <( find ~ -type d -printf "%f\n" )
# the function you want completion for
myfunc () { echo hello world $*; }
# the completion function
complete_myfunc() {
local dir cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=()
for dir in "${_all_dir_names[@]}"; do
if [[ $dir == "$cur"* ]]; then
printf -v dir "%q" "$dir" # protect whitespace in the dir name
COMPREPLY+=("$dir")
fi
done
}
# registering the completion
complete -F complete_myfunc myfunc
[1]: 2 minutos, 66782 diretórios