Команда printf имеет причины не принимать указатели в этом диапазоне. Если вы посмотрите на код sounce для printf, вы увидите следующий комментарий:
Универсальное имя символа не должно указывать короткий символ символа в диапазоне от 00000000 до 00000020, от 0000007F до 0000009F или от 0000D800 до 0000DFFF включительно. Имя универсального символа не должно обозначать символ в требуемом наборе символов.Возможно, вы сможете перекомпилировать без этой проверки, но для меня это выглядит очень преднамеренно. Попробуйте вместо этого использовать команду без \ u, например:
(
for nib1 in {0..9} {A..F}; do
for nib0 in {0..9} {A..F}; do
$(type -P printf) "\00$nib1$nib0"
done
done
echo
)