Расширение Bash шестнадцатеричное

10

Я хотел бы знать, есть ли способ использовать расширение bash для просмотра всех возможностей комбинации для ряда цифр в шестнадцатеричном формате. Я могу расширить в двоичных файлах

В базе 2:

echo {0..1}{0..1}{0..1}

Что возвращает:

000 001 010 011 100 101 110 111

В базе 10:

echo {0..9}{0..9}

Что возвращает:

00  01 02...99

Но в шестнадцатеричном:

echo {0..F}

Просто повторите:

{0..F}
Дэвид Борхес
источник
Обратите внимание, что echo {0-9A-F}работает в Zsh с BRACE_CCLопцией.
TonioElGringo
Обратите внимание, что в базе 10 вы также можете сказать, {00..99}чтобы получить тот же результат.
Руслан

Ответы:

20

Вы можете; вам просто нужно разбить диапазон {0..F}на два отдельных диапазона {0..9}и {A..F}:

$ printf '%s\n' {{0..9},{A..F}}{{0..9},{A..F}}
00
01
...
FE
EF
chepner
источник
Это более приятный трюк, чем запись каждой цифры вручную в 0-9A-F!
дхаг
14

Использование printf:

$ printf '%.2x\n' {0..255}

Строка формата %.2xговорит о том, что нужно отформатировать вывод как заполненное нулями двузначное шестнадцатеричное число в нижнем регистре ( %02xбыло бы то же самое).

Если вы хотите заглавные буквы, используйте %.2X.

Bash понимает только целочисленные диапазоны из 10 основ или диапазоны между символами ASCII в скобках с расширениями интервалов.

Кусалананда
источник
7

Это возможно, но это не приятно:

echo {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}

Насколько я могу судить bash, понятия о шестнадцатеричных диапазонах не имеет.

Сату Кацура
источник