Wie drucke ich die ersten 10 Bytes hexadezimal einer Datei?

Antworten:

11

Ich kam hierher und sah drei Antworten, in denen ich dachte, ich hätte nichts hinzuzufügen, und dies wäre eine Übung, wie viele Leute in der ersten Minute einer gestellten Frage denselben 1-Liner posten können. Aber ich finde Leute, die ein neues hexdumpWerkzeug benutzen . Dieser Befehl ist viel länger als 2 Buchstaben; es spielt auf eine andere Basis als The One True Base (Basis 8) an; und es ist sogar aus seinem Namen ersichtlich, was es tut. Dies ist eindeutig nicht der Unix-Weg.

Also hier ist die Freude an od("Octal Dump").

Erste GNU, wie Sie auf Ihrer Linux Mint finden:

od --format=x1 --read-bytes=10 foo

Nun BSD, wo die Ironie ist, dass es tatsächlich das gleiche Programm ist wie hexdump:

od -t x1 -N 10 foo
JdeBP
quelle
1
Ich habe meine Zähne auf 8-Bit-Mikroprozessoren geschnitten, bei denen alles in Hex ausgeführt wurde. Für mich ist die einzig wahre Basis 16. Ich habe Unix seit ungefähr '84 verwendet und eine Sache, die ich immer gehasst habe, ist die Fixierung mit Oktal: Ich kann Oktal mit seiner 3-Bit-Codierung nicht ausstehen Dies wird sich nicht nahtlos von einem auf mehrere Bytes erstrecken. Und oktale Ganzzahlliterale in C und anderen Sprachen sind ein Zugunglück, das bis heute Chaos anrichtet. (+1 übrigens)
Adrian Pronk
11

Option -l len | -len lenist für: Stopp nach dem Schreiben von <len>Oktetten.

Verwenden Sie es mit einer Datei wie dieser:

xxd -l 10 file

oder

hexdump -C -n 10 file

wo -n lenist das gleiche wie die -lOption von xxd.

erik
quelle
5

Sie können das verwenden xxd, um das zu tun.

$ xxd -ps -l 10 FILENAME
546865204d4954204c69

Dadurch werden die ersten 10 Byte ( -l 10) FILENAMEim einfachen Hex-Format ( -ps) gedruckt .

Daniel Beck
quelle