¿Cómo imprimir los primeros 10 bytes en hexadecimal de un archivo?

Respuestas:

11

Vine aquí viendo tres respuestas pensando que no tendría nada que agregar, y que esto sería un ejercicio sobre cuántas personas pueden publicar el mismo 1-liner en el primer minuto de una pregunta que se hace. Pero encuentro personas que usan alguna hexdumpherramienta novedosa . Ese comando es mucho más largo que 2 letras; alude a alguna base distinta de The One True Base (base 8); e incluso es evidente por su nombre lo que hace. Claramente esta no es la forma de Unix.

Así que aquí está la alegría de od("volcado octal").

Primero GNU, como encontrarás en tu Linux Mint:

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

Ahora BSD, donde la ironía es que en realidad es el mismo programa que hexdump:

od -t x1 -N 10 foo
JdeBP
fuente
1
Me corté los dientes con microprocesadores de 8 bits donde todo se hacía en hexadecimal. Entonces, para mí, la única base verdadera es 16. He usado Unix desde aproximadamente el '84 y una cosa que siempre he odiado siempre es su fijación con octal: no puedo soportar octal con su codificación de 3 bits que no se extenderá sin problemas de uno a varios bytes. Y los literales enteros octales en C y otros lenguajes son un choque de trenes que todavía causa estragos hasta el día de hoy. (+1, por cierto)
Adrian Pronk
11

La opción -l len | -len lenes para: detenerse después de escribir <len>octetos.

Úselo con un archivo como este:

xxd -l 10 file

o

hexdump -C -n 10 file

donde -n lenes lo mismo que la -lopción de xxd.

erik
fuente
5

Puedes usar xxdpara hacer eso.

$ xxd -ps -l 10 FILENAME
546865204d4954204c69

Esto imprime los primeros 10 bytes ( -l 10) FILENAMEen formato hexadecimal ( -ps).

Daniel Beck
fuente