To działa (z wartością ósemkową):
$ printf '%b' '\101'
A
nawet dla (niektórych: nie przekraczaj 7) sekwencji:
$ printf '%b' '\'{101..107}
ABCDEFG
Ogólna konstrukcja, która dopuszcza (dziesiętne) wartości w dowolnym zakresie, to:
$ printf '%b' $(printf '\\%03o' {65..122})
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
Lub możesz użyć wartości szesnastkowych znaków:
$ printf '%b' $(printf '\\x%x' {65..122})
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
Możesz również odzyskać znak za pomocą xxd (użyj wartości szesnastkowych):
$ echo "41" | xxd -p -r
A
Oznacza to, że jedno działanie jest odwrotnością drugiego:
$ printf "%x" "'A" | xxd -p -r
A
Działa również z kilkoma wartościami szesnastkowymi jednocześnie:
$ echo "41 42 43 44 45 46 47 48 49 4a" | xxd -p -r
ABCDEFGHIJ
lub sekwencje (printf służy tutaj do uzyskania wartości szesnastkowych):
$ printf '%x' {65..90} | xxd -r -p
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Lub nawet użyj awk:
$ echo 65 | awk '{printf("%c",$1)}'
A
nawet dla sekwencji:
$ seq 65 90 | awk '{printf("%c",$1)}'
ABCDEFGHIJKLMNOPQRSTUVWXYZ