¿Cómo creo un volcado hexadecimal no modificado de un archivo binario en Linux usando bash? Los comandos od
y hexdump
ambos insertan espacios en el volcado y esto no es ideal.
¿Hay alguna manera de simplemente escribir una cadena larga con todos los caracteres hexadecimales, menos espacios o nuevas líneas en la salida?
Respuestas:
xxd -p file
O si lo quieres todo en una sola línea:
xxd -p file | tr -d '\n'
fuente
Las cadenas de formato pueden hacer que hexdump se comporte exactamente como lo desea (sin espacios en blanco, byte por byte):
1/1
significa "cada formato se aplica una vez y toma un byte", y"%.2x"
es la cadena de formato real, como en printf. En este caso: número hexadecimal de 2 caracteres, ceros a la izquierda si es más corto.fuente
-v
o se caerán bytes repetidos y los reemplazará con un asterisco.; echo
hace que sea imposible usar como alias bash)alias to_hex="hexdump -ve '1/1 \"%.2x\"' && echo"
hexdump -ve '"%.2x"'
hexdump -n 13 -e '13/1 "%.2x" "\n"'
Parece depender de los detalles de la versión de
od
. En OSX, use esto:(Eso se imprime como bytes hexadecimales tipo, sin dirección. Y espacios en blanco eliminados después, por supuesto).
fuente
-v
en este contexto, de lo contrario, omite las repeticiones con*
.Perl one-liner:
fuente
Las otras respuestas son preferibles, pero para una solución Bash pura, he modificado el script en mi respuesta aquí para poder generar un flujo continuo de caracteres hexadecimales que representan el contenido de un archivo. (Su modo normal es emular
hexdump -C
).fuente