Intermédiaire 8 min de lecture 25 janvier 2025

od (octal dump) : afficher et comprendre les octets

Lorsqu’un fichier semble “bizarre”, une commande se trompe d’encodage, ou qu’un flux contient des octets inattendus, od est l’outil simple et fiable pour tout voir. Il affiche les données brutes dans plusieurs formats, révèle les offsets et aide à diagnostiquer rapidement les soucis de parsing, de retours à la ligne et de BOM.

Qu'est-ce que od ?

od (octal dump) est une commande Unix qui affiche les octets d’un fichier ou d’un flux sous différentes représentations lisibles: hexadécimal, octal, caractères, décimal non signé, avec adresses et options d’offset.

Voici les aspects essentiels de od à connaître :

1 Formats d'affichage avec -t

Choisir comment visualiser les octets: hex, octal, caractères, décimal.

-t x1/x2/x4 (hex), -t o1/o2/o4 (octal), -t c (caractère), -t u1/u2/u4 (entiers)

2 Offsets, adresses et sauts

Naviguer dans les données sans tout afficher.

-Ax (adresse en hex), -An (sans adresse), -j BYTES (skip), -N BYTES (longueur), -v (ne pas compresser)

3 Encodages et caractères

Vérifier BOM, retours à la ligne, octets non imprimables.

-t c / -t a pour visualiser CR (0d), LF (0a), TAB (09)
Détecter BOM UTF-8 (EF BB BF) ou UTF-16 (FF FE / FE FF)
Repérer octets hors ASCII et caractères spéciaux
Comparer variantes CRLF vs LF facilement

4 Flux, pipes et intégration

Utiliser od dans des pipelines pour diagnostiquer à la volée.

echo, curl, xxd, tr | od -An -t x1
Inspection de sockets/fifos/process substitution
Affichage adapté: -w WIDTH pour la largeur de ligne

Erreurs fréquentes avec od

Lancer od sans choisir le bon type

Sortie par défaut en octal déroutante. Préférez -t x1 ou -t c selon le diagnostic.

Confondre octets et caractères

UTF-8 encode certains caractères sur plusieurs octets. Utilisez -t x1 pour inspecter byte par byte.

Interpréter mal CRLF vs LF

0d 0a n’est pas 0a. od permet de le voir immédiatement et d’ajuster vos traitements.

Oublier -An/-Ax pour maîtriser l’adresse

Supprimer les adresses (-An) ou choisir le format d’offset (-Ax) évite des confusions en post-traitement.

Exemple de différence invisible révélée par od :

# Deux chaînes "identiques" avec fin de ligne différente
echo -ne "email@domain.com\n" | od -An -t x1
echo -ne "email@domain.com\r\n" | od -An -t x1 # Affiche 0d 0a au lieu de 0a
# Une comparaison textuelle passe, mais un parseur sensible aux fins de ligne échoue

Situations où od fait gagner du temps

🚨 Indices que vous devez passer par od

!
Un diff git indique des changements mais vous ne voyez aucun caractère inhabituel
!
Un CSV casse des colonnes à cause d’un caractère caché ou d’un encodage inattendu
!
Un .env contient un BOM ou des CRLF et l’outil de chargement refuse la clé
!
Votre terminal affiche des symboles étranges, vous suspectez des octets non imprimables
!
Une API renvoie un flux binaire et vous devez en comprendre la structure

Bien utiliser od

Solution recommandée : od

od affiche exactement ce que contient un fichier, octet par octet. Combinez les bons types (-t), masquez l’adresse (-An), choisissez l’offset (-Ax) et limitez la lecture (-j, -N) pour un diagnostic clair et rapide.

✅ Formats flexibles

Hex, octal, caractères, entiers signés/non signés avec -t

📊 Offsets lisibles

Adresses en hex avec -Ax ou suppression avec -An

🧹 Ciblage précis

Saut/longueur via -j et -N pour isoler une zone

💾 Travail en pipeline

Inspection directe depuis stdin: cmd | od -An -t x1

Approches complémentaires

Affichage dans l'éditeur

Activez l’affichage des caractères invisibles, puis confirmez le diagnostic avec od
Utilisez un linter qui souligne CRLF/BOM et validez les octets via od -An -t x1

En ligne de commande (Unix)

# Afficher les octets en hex, sans adresse
od -An -t x1 fichier.bin
# Montrer les retours à la ligne et tabulations
od -An -t c fichier.txt
# Sauter 100 octets et lire 32 octets
od -An -t x1 -j 100 -N 32 fichier.bin
# Offsets en hex et largeur contrôlée
od -Ax -t x1 -w16 fichier.txt

En code

JavaScript

Buffer.from(str, 'utf8').toString('hex').match(/.{1,2}/g)

Python

[f"{b:02x}" for b in s.encode("utf-8")]

Excel / Google Sheets

DEC2HEX(CODE(MID(cellule;position;1));2)

Analyser et prévenir avec od

🚀 Solution rapide avec od

Avant de modifier des pipelines entiers, passez votre fichier dans od pour visualiser précisément ce qui coince :

Vérification instantanée des octets
Identification de BOM/CRLF
Comparaison avant/après transformation

Méthodes techniques avancées

🔧 Normaliser

Repérez un BOM avec od, supprimez-le si inutile
Unifiez CRLF/LF et confirmez la conversion via od -An -t x1
Vérifiez la cohérence d’encodage avant ingestion

🧹 Filtrer

Écrivez des filtres qui retirent les octets non désirés, validez le résultat avec od
Remplacez CRLF, NBSP ou null bytes et contrôlez l’effet au niveau octet
Bloquez les caractères de contrôle indésirables en entrée

⚙️ Automatiser

Hooks pre-commit qui utilisent od pour rejeter des fichiers avec BOM/CRLF non souhaités
Tests d’intégration comparant les octets attendus vs reçus
Vérification CI des artefacts (taille, BOM, fins de ligne) avec od

Checklist rapide

Savoir basculer entre -t x1, -t c, -t o1 selon le besoin
Utiliser -An/-Ax pour maîtriser l’adresse en sortie
Limiter la zone d’analyse avec -j et -N
Visualiser retours à la ligne et BOM avec od avant toute conversion
Intégrer od dans les scripts de diagnostic
Documenter les conventions d’encodage et EOL de votre projet

Conclusion

od met en lumière ce que les éditeurs et les diff ne montrent pas toujours: les octets réels. En quelques options, vous validez encodage, fins de ligne et contenus binaires.

Adoptez od dans vos diagnostics courants, intégrez-le à vos scripts et vous éviterez une grande partie des erreurs liées aux formats et aux encodages.

Inspectez vos fichiers avec od

Utilisez od pour visualiser les octets, repérer un BOM, distinguer CRLF de LF et comprendre vos données.

Analyser un fichier