Você pode descobrir o que o _expand
faz ao digitar
$ type _expand
_expand is a function
_expand ()
{
if [[ "$cur" == \~*/* ]]; then
eval cur=$cur;
else
if [[ "$cur" == \~* ]]; then
cur=${cur#\~};
COMPREPLY=($( compgen -P '~' -u "$cur" ));
[ ${#COMPREPLY[@]} -eq 1 ] && eval COMPREPLY[0]=${COMPREPLY[0]};
return ${#COMPREPLY[@]};
fi;
fi
}
Esta é uma função no mecanismo de conclusão do bash. Ele expande tildes ( ~
) em nomes de caminho. Em /etc/bash_completion
é um comentário sobre a função:
# Expand ~username type directory specifications. We want to expand
# ~foo/... to /home/foo/... to avoid problems when $cur starting with
# a tilde is fed to commands and ending up quoted instead of expanded.
Tente em um terminal, digite:
~<tab><tab>
Ele será expandido para os nomes de usuário, por exemplo
~usera ~userb ~userc