Wie kann ich in der Shell die Bytes einer vorhandenen Binärdatei lesen und die Ausgabe als Hexadezimalzahl ausgeben?
shell
text-processing
binary
Tom Brito
quelle
quelle
Antworten:
Verwenden
hexdump(1)
...
quelle
od
. Es gibt auch einen Hex-Editor im vi-Stilhexer
.hexdump -e '"\\\x" /1 "%02x"' filename
10
, der 16 hexadezimal ist. Die Zwei-Byte-Darstellung hängt von der Endianze des Systems ab. Geben Sieman hexdump
für die vollständigen Details.Eine andere Option ist od :
oder
od
hat viele Möglichkeiten zur Feinabstimmung.quelle
od -t x1
Ich denke, die meisten Leute würden das bevorzugte Format finden .od -t test
bekam ichod: invalid character 't' in type string 'test'
--t
od --version od (GNU coreutils) 7.4
Während wir auf
od
und sindhexdump
, zwei ähnliche Tools:Beispielausgabe:
Wenn Sie die Bytes einzeln lesen und in Ihrem eigenen Format drucken möchten, versuchen Sie Folgendes:
Beispielausgabe:
quelle
while
Schleife funktioniert nicht für Backslash- und Newline-Zeichen (und in bash (im Gegensatz zu ksh93) für Leerzeichen), und in utf8-Gebietsschemas für Bytes mit gesetztem 8. Bit funktioniert sie auch nicht ordnungsgemäß. Außerdem brauchst du dort kein "od", das kannst du benutzenprintf '%02x\n' "'$byte"
offset
ist hier nur eine Art "Dummy-Variable"; es hat keinen praktischen Nutzen. Es wird nur als Platzhalter verwendet, um dorthin zu gelangenhex
. Dies wirkt sich manchmal negativ auf die Lesbarkeit aus, wennread
: Variablen aus heiterem Himmel erscheinen.$offset
jedoch durch die Unterschale begrenzt, sodass ich dies nicht als Problem sehe.Meine zwei Cent:
Ich mag das, weil Sie eine gerade gepufferte Datei verfolgen, während Sie in der Lage sind, den Hexdump live zu sehen. Vergessen Sie nicht, dass ALLES in Unix eine Datei ist und wir Befehle wie
tail
und leicht verketten könnenhexdump
, um eine Vielzahl von Problemen zu lösen.quelle
for((i=0;i<100;i++));do echo $i >>tst2.bin;sleep 1;done&
es funktioniert gut für die Überwachung von thx :)Der Mitternachtskommandeur ist eine weitere Option. Ich weiß nicht, ob es für alle Unix-Varianten verfügbar ist. Möglicherweise müssen Sie es zuerst herunterladen.
F3 F4im internen Editor / im Hex-Modus anzeigen.
quelle
Ich benutze od mit c und x1, wenn ich nach Text in der Binärdatei suchen muss:
quelle