Esto funciona (con el valor en octal):
$ printf '%b' '\101'
A
incluso para (algunos: no pases de 7) secuencias:
$ printf '%b' '\'{101..107}
ABCDEFG
Una construcción general que permite valores (decimales) en cualquier rango es:
$ printf '%b' $(printf '\\%03o' {65..122})
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
O puede usar los valores hexadecimales de los caracteres:
$ printf '%b' $(printf '\\x%x' {65..122})
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
También puede recuperar el carácter con xxd (use valores hexadecimales):
$ echo "41" | xxd -p -r
A
Es decir, una acción es la inversa de la otra:
$ printf "%x" "'A" | xxd -p -r
A
Y también funciona con varios valores hexadecimales a la vez:
$ echo "41 42 43 44 45 46 47 48 49 4a" | xxd -p -r
ABCDEFGHIJ
o secuencias (printf se usa aquí para obtener valores hexadecimales):
$ printf '%x' {65..90} | xxd -r -p
ABCDEFGHIJKLMNOPQRSTUVWXYZ
O incluso usa awk:
$ echo 65 | awk '{printf("%c",$1)}'
A
incluso para secuencias:
$ seq 65 90 | awk '{printf("%c",$1)}'
ABCDEFGHIJKLMNOPQRSTUVWXYZ