web-dev-qa-db-ja.com

16進数のBash拡張

16進数の桁数の組み合わせのすべての可能性を表示するために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

しかし、16進数では:

echo {0..F}

繰り返すだけ:

{0..F}
10
David Borges

あなたはできる;範囲を壊すだけです{0..F} 2つの別個の範囲に{0..9}および{A..F}

$ printf '%s\n' {{0..9},{A..F}}{{0..9},{A..F}}
00
01
...
FE
EF
20
chepner

printfの使用:

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

書式文字列%.2xは、ゼロで埋められた2桁の小文字の16進数として出力を書式設定することを示しています(%02xでも同じことです)。

大文字が必要な場合は、%.2Xを使用します。

Bashは、基数10の整数の範囲、またはASCII文字の間の範囲のブレース展開内の文字のみを理解します。

14
Kusalananda

それは可能ですが、それは良いことではありません:

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には16進数の範囲の概念はありません。

7
Satō Katsura