Estos comandos hacen cosas muy similares: mostrar una representación textual de un archivo binario, usando notación octal, decimal o hexadecimal. No hay diferencia fundamental entre los dos.
Tienen muchas opciones para controlar el formato de salida, y algunos formatos solo se pueden lograr con uno u otro comando. En particular, para ver un vistazo de lo que hay en un archivo binario, me gusta hdel formato de salida, con una columna a la derecha que muestra caracteres imprimibles literalmente; odNo puedo hacer eso.
$ 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.....|
¡Gracias! En salida octal por od, ¿un dígito significa tres bits? Entonces, por ejemplo, ¿ 042577son 18 bits, es decir, 9/4 bytes?
Tim
@Tim Sí, octal significa que cada dígito corresponde a 3 bits (y hexadecimal , 4 bits). 042577 en realidad representa 16 bits (2 bytes); el primer dígito en un bloque en este formato siempre será 0 o 1. octal (042577) = hexadecimal (7f45) = decimal (32581).
Gilles 'SO- deja de ser malvado'
¡Gracias! Leí de otras fuentes que los números octales comienzan con un 0. adicional ¿Qué significa cuando comienza con 1?
Tim
@Tim En muchos lenguajes de programación, 123es un número representado en base 10 (decimal), mientras 0123que significa que el número está representado en base 8 (octal), 0123es decir, 83. 0x123estaría en base 16 (hexadecimal), es decir, 291. Esto es no relacionado con el odformato de salida.
Gilles 'SO- deja de ser malvado'
¿Muchos? Yo diría cualquier tipo de C y derivados, sí, de hecho. ¿Qué más? ¿Cuántos?
Poige
5
En realidad, odpuede mostrar tanto caracteres hexadecimales / oct / dec como imprimibles:
xxd
también! : DRespuestas:
hd
es un sinónimo parahexdump -C
el FreeBSD y en algunas distribuciones de Linux.hexdump
es de los días BSD ;od
Es desde los albores del tiempo . Solood
está estandarizado por POSIX . La justificación Single UNIX discute por quéod
se eligió con preferencia ahd
oxd
.Estos comandos hacen cosas muy similares: mostrar una representación textual de un archivo binario, usando notación octal, decimal o hexadecimal. No hay diferencia fundamental entre los dos.
Tienen muchas opciones para controlar el formato de salida, y algunos formatos solo se pueden lograr con uno u otro comando. En particular, para ver un vistazo de lo que hay en un archivo binario, me gusta
hd
el formato de salida, con una columna a la derecha que muestra caracteres imprimibles literalmente;od
No puedo hacer eso.fuente
042577
son 18 bits, es decir, 9/4 bytes?123
es un número representado en base 10 (decimal), mientras0123
que significa que el número está representado en base 8 (octal),0123
es decir, 83.0x123
estaría en base 16 (hexadecimal), es decir, 291. Esto es no relacionado con elod
formato de salida.En realidad,
od
puede mostrar tanto caracteres hexadecimales / oct / dec como imprimibles:La principal diferencia, supongo, es solo histórica. También algunas versiones
hd
pueden dar salida al color.fuente
od
no es compatible con elz
sufijo en-tx1z
hd
. Sin embargo, útil, gracias :)