Comment créer un dump hexagonal non modifié d'un fichier binaire sous Linux à l'aide de bash? Les commandes od
et hexdump
insèrent des espaces dans la sauvegarde, ce qui n'est pas idéal.
Existe-t-il un moyen d'écrire simplement une longue chaîne avec tous les caractères hexadécimaux, les espaces moins ou les nouvelles lignes de la sortie?
xxd -p file
Ou si vous voulez tout sur une seule ligne:
xxd -p file | tr -d '\n'
Les chaînes de format peuvent faire en sorte que hexdump se comporte exactement comme vous le souhaitez (aucun espace, octet par octet):
hexdump -ve '1/1 "%.2x"'
1/1
signifie "chaque format est appliqué une fois et prend un octet", et "%.2x"
est la chaîne de format actuelle, comme dans printf. Dans ce cas: nombre hexadécimal à 2 caractères, zéros à gauche si plus court.
Cela semble dépendre des détails de la version de od
. Sous OSX, utilisez ceci:
od -t x1 -An file |tr -d '\n '
(Il s'agit d'une impression sous forme d'octets hexadécimaux de type, sans adresse. Les espaces sont ensuite supprimés, bien sûr.)
Perl one-liner:
Perl -e 'local $/; print unpack "H*", <>' file
Les autres réponses sont préférables, mais pour une solution purement Bash, j'ai modifié le script en ma réponse ici afin de pouvoir générer un flux continu de caractères hexadécimaux représentant le contenu d'un fichier. (Son mode normal consiste à émuler hexdump -C
.)