16進数のBash拡張


10

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}

オプション付きのecho {0-9A-F}zshで動作することに注意してくださいBRACE_CCL
TonioElGringo 2017

ベース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

これは、0-9A-Fで各桁を手動で書き込むよりも優れたトリックです。
dhag 2017

14

使用printf

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

フォーマット文字列%.2xは、出力をゼロで埋められた2桁の小文字の16進数としてフォーマットする%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、16進数の範囲の概念はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.