Funziona (con il valore in ottale):
$ printf '%b' '\101'
A
anche per (alcune: non andare oltre 7) sequenze:
$ printf '%b' '\'{101..107}
ABCDEFG
Un costrutto generale che consente valori (decimali) in qualsiasi intervallo è:
$ printf '%b' $(printf '\\%03o' {65..122})
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
Oppure puoi usare i valori esadecimali dei caratteri:
$ printf '%b' $(printf '\\x%x' {65..122})
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
Puoi anche recuperare il carattere con xxd (usa valori esadecimali):
$ echo "41" | xxd -p -r
A
Cioè, un'azione è il contrario dell'altra:
$ printf "%x" "'A" | xxd -p -r
A
E funziona anche con più valori esadecimali contemporaneamente:
$ echo "41 42 43 44 45 46 47 48 49 4a" | xxd -p -r
ABCDEFGHIJ
o sequenze (printf è usato qui per ottenere valori esadecimali):
$ printf '%x' {65..90} | xxd -r -p
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Oppure usa awk:
$ echo 65 | awk '{printf("%c",$1)}'
A
anche per le sequenze:
$ seq 65 90 | awk '{printf("%c",$1)}'
ABCDEFGHIJKLMNOPQRSTUVWXYZ