Com bash, zsh, GNU echo ou algumas implementações de ksh em alguns sistemas, isso pode ser decodificado simplesmente por echo -e
após a substituição de todos os %
por \x
.
url_encoded_string="%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B"
temp_string=${url_encoded_string//%/\x}
printf '%s\n' "$temp_string"
# output: \xD1\x80\xD0\xB5\xD1\x81\xD1\x83\xD1\x80\xD1\x81\xD1\x8B
echo -e "$temp_string"
# output: ресурсы
(Assume-se que a string em si não contém caracteres de barra invertida e não é uma das opções suportadas pelo seu comando echo
)
Como @JoshLee também aponta, a "ressalva de eco" pode ser evitada usando diretamente:
printf ${url_encoded_string//%/\x}
diretamente atrás do primeiro comando.