Ces commandes font des choses très similaires: afficher une représentation textuelle d'un fichier binaire, en utilisant une notation octale, décimale ou hexadécimale. Il n'y a pas de différence fondamentale entre les deux.
Ils ont de nombreuses options pour contrôler le format de sortie, et certains formats ne peuvent être obtenus qu'avec l'une ou l'autre commande. En particulier, pour voir ce qui se trouve dans un fichier binaire, j'aime hdle format de sortie de, avec une colonne à droite montrant les caractères imprimables littéralement; odne peut pas faire ça.
$ 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.....|
Merci! En sortie octale par od, un chiffre signifie-t-il trois bits? Ainsi, par exemple, 042577est de 18 bits, soit 9/4 octets?
Tim
@Tim Oui, octal signifie que chaque chiffre correspond à 3 bits (et hexadécimal , 4 bits). 042577 représente en fait 16 bits (2 octets); le premier chiffre d'un bloc dans ce format sera toujours 0 ou 1. octal (042577) = hexadécimal (7f45) = décimal (32581).
Gilles 'SO- arrête d'être méchant'
Merci! J'ai lu dans d'autres sources que les nombres octaux commencent par un 0 supplémentaire. Qu'est-ce que cela signifie quand il commence par 1?
Tim
@Tim Dans de nombreux langages de programmation, 123est un nombre représenté en base 10 (décimal), alors que 0123signifie que le nombre est représenté en base 8 (octal), c'est 0123-à- dire 83. 0x123serait en base 16 (hexadécimal), soit 291. C'est sans rapport avec le odformat de sortie.
Gilles 'SO- arrête d'être méchant'
Beaucoup? Je dirais n'importe quel C-like et dérivés - oui, en effet. Quoi d'autre? Combien?
poige
5
En fait, odpeut afficher à la fois les caractères hex / oct / dec et imprimables:
xxd
plus! : DRéponses:
hd
est synonyme dehexdump -C
sur FreeBSD et sur certaines distributions Linux.hexdump
est des jours BSD ;od
est de la nuit des temps . Seulod
est normalisé par POSIX . La justification UNIX unique explique pourquoi aod
été choisi de préférence àhd
ouxd
.Ces commandes font des choses très similaires: afficher une représentation textuelle d'un fichier binaire, en utilisant une notation octale, décimale ou hexadécimale. Il n'y a pas de différence fondamentale entre les deux.
Ils ont de nombreuses options pour contrôler le format de sortie, et certains formats ne peuvent être obtenus qu'avec l'une ou l'autre commande. En particulier, pour voir ce qui se trouve dans un fichier binaire, j'aime
hd
le format de sortie de, avec une colonne à droite montrant les caractères imprimables littéralement;od
ne peut pas faire ça.la source
042577
est de 18 bits, soit 9/4 octets?123
est un nombre représenté en base 10 (décimal), alors que0123
signifie que le nombre est représenté en base 8 (octal), c'est0123
-à- dire 83.0x123
serait en base 16 (hexadécimal), soit 291. C'est sans rapport avec leod
format de sortie.En fait,
od
peut afficher à la fois les caractères hex / oct / dec et imprimables:La principale différence, je suppose, n'est qu'historique. Certaines versions
hd
peuvent également colorer la sortie.la source
od
ne prend pas en charge lez
suffixe dans-tx1z
hd
. Néanmoins, utile, merci :)