Você poderia usar o xxd. Por exemplo:
xxd -r -p <(echo 004100610061)
Claro que não colocaremos uma nova linha extra, então você pode querer invocar imediatamente o eco também, por exemplo:
xxd -r -p <(echo 004100610061) ; echo
Então, novamente, talvez o redirecionamento maluco torne esses comandos confusos, então talvez seja mais fácil seguir o que ele faz dessa maneira:
echo 004100610061 | xxd -r -p ; echo
xxd lê a entrada de echo e -r diz para ir de um despejo hexadecimal de volta para binário, e o -p diz que esquece de procurar informações de endereço no despejo hexadecimal, e então o eco insere uma nova linha extra. Portanto, esses comandos são todos apenas xxd lendo sua entrada do padrão, convertendo os valores hexadecimais de volta em binário e exibindo-os.
Editar: Como aponta @Rudd, isso será apenas saída binária. Seu terminal provavelmente irá ignorar os bits não-imprimíveis e estupidamente interpretá-lo como ascii, então coloque alguns bytes extras lá e redirecione sua saída para um arquivo para uma conversão mais precisa.
Por exemplo, se você sabe que sua entrada é big endian utf-16:
echo feff004100610061 | xxd -r -p > output.txt
Em seguida, visualize o resultado em um editor com reconhecimento de unicode.
Por exemplo:
vim output.txt
Para outras listas de materiais de codificação, consulte wikipedia