Wie erstelle ich mit Bash einen unveränderten Hex-Dump einer Binärdatei unter Linux? Die Befehle od
und hexdump
fügen beide Leerzeichen in den Speicherauszug ein, und dies ist nicht ideal.
Gibt es eine Möglichkeit, einfach eine lange Zeichenfolge mit allen Hex-Zeichen, Minuszeichen oder Zeilenumbrüchen in der Ausgabe zu schreiben?
Antworten:
xxd -p file
Oder wenn Sie alles in einer einzigen Zeile haben möchten:
xxd -p file | tr -d '\n'
quelle
Formatzeichenfolgen können dazu führen, dass sich Hexdump genau so verhält, wie Sie es möchten (überhaupt kein Leerzeichen, Byte für Byte):
1/1
bedeutet "jedes Format wird einmal angewendet und benötigt ein Byte" und"%.2x"
ist die eigentliche Formatzeichenfolge, wie in printf. In diesem Fall: 2-stellige Hexadezimalzahl, führende Nullen, wenn kürzer.quelle
-v
oder es werden wiederholte Bytes gelöscht und durch ein Sternchen ersetzt.; echo
macht es unmöglich , als Bash alias zu verwenden)alias to_hex="hexdump -ve '1/1 \"%.2x\"' && echo"
hexdump -ve '"%.2x"'
hexdump -n 13 -e '13/1 "%.2x" "\n"'
Es scheint von den Details der Version von abzuhängen
od
. Verwenden Sie unter OSX Folgendes:(Das wird als hexadezimale Bytes ohne Adresse gedruckt. Danach werden natürlich Leerzeichen gelöscht.)
quelle
-v
in diesem Zusammenhang hinzufügen , sonst überspringt es Wiederholungen mit*
.Perl Einzeiler:
quelle
Die anderen Antworten sind vorzuziehen, aber für eine reine Bash-Lösung habe ich das Skript in meiner Antwort hier geändert , um einen kontinuierlichen Strom von Hex-Zeichen ausgeben zu können, die den Inhalt einer Datei darstellen. (Der normale Modus ist das Emulieren
hexdump -C
.)quelle