Isso não será tão fácil quanto você deseja. A conclusão programável não é capaz de substituir comandos. E você tem que terminar (isto é, arrastar o espaço em branco) a palavra de comando antes que a conclusão programável seja ativada.
Isso significa que você deve criar um alias ou função para cdd
, que o substitui por cd
. Isso não deve ser um problema (exceto para nomes de diretório contendo nova linha ...). O resto pode ser feito assim:
_cdd () { IFS=$'\n'; if [ 1 -eq "$COMP_CWORD" -a 0 -eq "${#COMP_WORDS[1]}" ];
then COMPREPLY=("/your/home/folder/Downloads/");
else COMPREPLY=($(compgen -A directory "${COMP_WORDS[1]}"));fi; }
complete -o filenames -F _cdd cdd
colocando o cursor dentro de uma palavra
Eu não acho que seja uma boa ideia. Mas com isso em mente: É possível mover o cursor para trás, mas não consegui trabalhar na conclusão programável:
back_seq=$'\e[D'
output=""; for((i=0;i<5;i++)); do output+="$back_seq"; done
echo -n 123456789"$output"; sleep 5