Diese Befehle führen sehr ähnliche Aktionen aus: Anzeigen einer Textdarstellung einer Binärdatei in Oktal-, Dezimal- oder Hexadezimalschreibweise. Es gibt keinen grundlegenden Unterschied zwischen den beiden.
Sie haben viele Optionen zur Steuerung des Ausgabeformats, und einige Formate können nur mit dem einen oder anderen Befehl erreicht werden. Um einen Blick auf die Inhalte einer Binärdatei zu werfen, gefällt mir hddas Ausgabeformat mit einer Spalte auf der rechten Seite, in der druckbare Zeichen buchstäblich angezeigt werden. odkann das nicht.
$ od /bin/sh | head -n 2 # od default: octal, 2-byte words
0000000 042577 043114 000402 000001 000000 000000 000000 000000
0000020 000002 000076 000001 000000 170020 000101 000000 000000
$ od -Ax -t x1 /bin/sh | head -n 2 # od showing bytes in hexadecimal
000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
000010 02 00 3e 00 01 00 00 00 10 f0 41 00 00 00 00 00
$ hd /bin/sh | head -n 2 # hd default output: nice
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 02 00 3e 00 01 00 00 00 10 f0 41 00 00 00 00 00 |..>.......A.....|
Vielen Dank! Bedeutet eine Ziffer bei der oktalen Ausgabe von od drei Bits? So sind zum Beispiel 04257718 Bits dh 9/4 Bytes?
Tim
@Tim Ja, oktal bedeutet, dass jede Ziffer 3 Bits entspricht (und hexadezimal 4 Bits). 042577 repräsentiert tatsächlich 16 Bits (2 Bytes); Die erste Ziffer in einem Block in diesem Format ist immer 0 oder 1. Oktal (042577) = Hexadezimal (7f45) = Dezimal (32581).
Gilles 'SO - hör auf böse zu sein'
Vielen Dank! Ich habe aus anderen Quellen gelesen, dass Oktalzahlen mit einer zusätzlichen 0 beginnen. Was bedeutet es, wenn es mit 1 beginnt?
Tim
@Tim In vielen Programmiersprachen 123wird eine Zahl in Basis 10 (dezimal) dargestellt, während dies 0123bedeutet, dass die Zahl in Basis 8 (oktal) dargestellt wird, dh 012383 ist. 0x123Dies wäre in Basis 16 (hexadezimal), dh 291. Dies ist unabhängig vom odAusgabeformat.
Gilles 'SO - hör auf böse zu sein'
Viele? Ich würde alle C-ähnlichen und Derivate sagen - ja, in der Tat. Was sonst? Wie viele?
Poige
5
Tatsächlich odkönnen beide hex Anzeige / Okt / dec und druckbare Zeichen:
xxd
! : DAntworten:
hd
ist ein Synonym fürhexdump -C
auf FreeBSD und auf einigen Linux - Distributionen.hexdump
ist aus den BSD-Tagen ;od
ist von Anfang an . Nurod
ist von POSIX standardisiert . In der Begründung zu Single UNIX wird erläutert, warumod
gegenüberhd
oder bevorzugt wurdexd
.Diese Befehle führen sehr ähnliche Aktionen aus: Anzeigen einer Textdarstellung einer Binärdatei in Oktal-, Dezimal- oder Hexadezimalschreibweise. Es gibt keinen grundlegenden Unterschied zwischen den beiden.
Sie haben viele Optionen zur Steuerung des Ausgabeformats, und einige Formate können nur mit dem einen oder anderen Befehl erreicht werden. Um einen Blick auf die Inhalte einer Binärdatei zu werfen, gefällt mir
hd
das Ausgabeformat mit einer Spalte auf der rechten Seite, in der druckbare Zeichen buchstäblich angezeigt werden.od
kann das nicht.quelle
042577
18 Bits dh 9/4 Bytes?123
wird eine Zahl in Basis 10 (dezimal) dargestellt, während dies0123
bedeutet, dass die Zahl in Basis 8 (oktal) dargestellt wird, dh0123
83 ist.0x123
Dies wäre in Basis 16 (hexadezimal), dh 291. Dies ist unabhängig vomod
Ausgabeformat.Tatsächlich
od
können beide hex Anzeige / Okt / dec und druckbare Zeichen:Der Hauptunterschied ist wohl nur historisch. Einige Versionen
hd
können auch Farben ausgeben.quelle
od
unterstützt dasz
Suffix in-tx1z
hd
. Trotzdem nützlich, danke :)