Comment créer un vidage hexadécimal non modifié d'un fichier binaire sous Linux à l'aide de bash? Les od
et hexdump
commandes les deux espaces d'insertion dans la décharge et ce n'est pas idéal.
Existe-t-il un moyen d'écrire simplement une longue chaîne avec tous les caractères hexadécimaux, moins les espaces ou les retours à la ligne dans la sortie?
Réponses:
xxd -p file
Ou si vous voulez tout sur une seule ligne:
xxd -p file | tr -d '\n'
la source
Les chaînes de format peuvent faire en sorte que hexdump se comporte exactement comme vous le souhaitez (pas d'espaces du tout, octet par octet):
1/1
signifie "chaque format est appliqué une fois et prend un octet", et"%.2x"
est la chaîne de format réelle, comme dans printf. Dans ce cas: nombre hexadécimal à 2 caractères, zéros non significatifs s'ils sont plus courts.la source
-v
ou il supprimera les octets répétés et les remplacera par un astérisque.; echo
rend impossible l'utilisation comme alias bash)alias to_hex="hexdump -ve '1/1 \"%.2x\"' && echo"
hexdump -ve '"%.2x"'
hexdump -n 13 -e '13/1 "%.2x" "\n"'
Cela semble dépendre des détails de la version de
od
. Sur OSX, utilisez ceci:(C'est imprimer sous forme d'octets hexadécimaux, sans adresse. Et les espaces supprimés par la suite, bien sûr.)
la source
-v
dans ce contexte, sinon il saute les répétitions avec*
.Perl one-liner:
la source
Les autres réponses sont préférables, mais pour une solution pure Bash, j'ai modifié le script dans ma réponse ici pour pouvoir sortir un flux continu de caractères hexadécimaux représentant le contenu d'un fichier. (Son mode normal est d'émuler
hexdump -C
.)la source