En shell, ¿cómo puedo leer los bytes de un archivo binario que tengo e imprimir la salida como números hexadecimales?
shell
text-processing
binary
Tom Brito
fuente
fuente
Respuestas:
Utilizar
hexdump(1)
...
fuente
od
. También hay un editor hexadecimal de estilo vi llamadohexer
.hexdump -e '"\\\x" /1 "%02x"' filename
10
, que es 16 en hexadecimal. La representación de dos bytes depende de la endianidad del sistema. Escribaman hexdump
para los detalles completos.Otra opción es od :
o
od
tiene muchas opciones para un ajuste fino.fuente
od -t x1
como formato preferido, supongo.od -t test
que obtuveod: invalid character 't' in type string 'test'
--t
od --version od (GNU coreutils) 7.4
Mientras estamos en
od
yhexdump
, dos herramientas más similares:Salida de muestra:
O, si desea leer los bytes de uno en uno e imprimirlos en su propio formato, intente algo como:
Salida de muestra:
fuente
while
bucle no funciona para la barra diagonal inversa y los caracteres de nueva línea (y en bash (a diferencia de ksh93) para los caracteres en blanco), ni funcionará correctamente en utf8 locales para bytes con el octavo bit establecido. Además, no necesita "od" allí, puede usarprintf '%02x\n' "'$byte"
offset
es simplemente una especie de "variable ficticia"; No tiene uso práctico. Solo se usa como marcador de posición para llegarhex
. Esto es lo que a veces afecta la legibilidad de manera negativa conread
: variables que salen de la nada.$offset
está limitado por la subshell, por lo que no lo veo como un problema.Mis dos centavos:
Me gusta esto porque estás siguiendo un archivo de almacenamiento en búfer actual mientras puedes ver el hexdump en vivo. No olvide que TODO en Unix es un archivo y podemos encadenar fácilmente comandos como
tail
yhexdump
para resolver una amplia variedad de problemas.fuente
for((i=0;i<100;i++));do echo $i >>tst2.bin;sleep 1;done&
él funciona bien para monitorear thx :)El comandante de medianoche es otra opción. No sé si está disponible para todos los sabores de Unix. Es posible que deba descargarlo primero.
F3 F4para ver en editor interno / en modo hexadecimal.
fuente
Uso od con c y x1, cuando necesito buscar texto dentro del archivo binario:
fuente