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:
xxdtambién! : DRespuestas:
hdes un sinónimo parahexdump -Cel FreeBSD y en algunas distribuciones de Linux.hexdumpes de los días BSD ;odEs desde los albores del tiempo . Soloodestá estandarizado por POSIX . La justificación Single UNIX discute por quéodse eligió con preferencia ahdoxd.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.fuente
042577son 18 bits, es decir, 9/4 bytes?123es un número representado en base 10 (decimal), mientras0123que 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 elodformato de salida.En realidad,
odpuede mostrar tanto caracteres hexadecimales / oct / dec como imprimibles:La principal diferencia, supongo, es solo histórica. También algunas versiones
hdpueden dar salida al color.fuente
odno es compatible con elzsufijo en-tx1zhd. Sin embargo, útil, gracias :)