Bash-Erweiterung hexadezimal

10

Ich würde gerne wissen, ob es eine Möglichkeit gibt, die Bash-Erweiterung zu verwenden, um alle Kombinationsmöglichkeiten für eine Anzahl von Ziffern hexadezimal anzuzeigen. Ich kann in Binärdateien erweitern

In Basis 2:

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

Welches gibt zurück:

000 001 010 011 100 101 110 111

In Basis 10:

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

Welches gibt zurück:

00  01 02...99

Aber hexadezimal:

echo {0..F}

Wiederholen Sie einfach:

{0..F}
David Borges
quelle
Beachten Sie, dass dies echo {0-9A-F}in zsh mit der BRACE_CCLOption funktioniert .
TonioElGringo
Beachten Sie, dass Sie in Basis 10 auch sagen können {00..99}, dass Sie dieselbe Ausgabe erhalten möchten.
Ruslan

Antworten:

20

Du kannst; Sie müssen den Bereich nur {0..F}in zwei separate Bereiche aufteilen {0..9}und {A..F}:

$ printf '%s\n' {{0..9},{A..F}}{{0..9},{A..F}}
00
01
...
FE
EF
chepner
quelle
Dies ist ein schöner Trick, als jede Ziffer manuell in 0-9A-F zu schreiben!
Dhag
14

Verwenden von printf:

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

Die Formatierungszeichenfolge %.2xbesagt, dass die Ausgabe als nullgefüllte, zweistellige Hexadezimalzahl in Kleinbuchstaben formatiert werden soll ( %02xhätte dasselbe getan).

Wenn Sie Großbuchstaben wünschen, verwenden Sie %.2X.

Bash versteht nur ganzzahlige Bereiche der Basis 10 oder Bereiche zwischen ASCII-Zeichen in Klammererweiterungen von Intervallen.

Kusalananda
quelle
7

Es ist möglich, aber es ist nicht schön:

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}

Soweit ich das beurteilen kann, bashgibt es keine Vorstellung von Hex-Bereichen.

Satō Katsura
quelle