La commande od sous Linux est utilisée pour afficher le contenu d'un fichier dans différents formats, le format octal étant le format par défaut.
Cette commande est particulièrement utile lors du débogage de scripts Linux pour des modifications ou des caractères indésirables.
Cet article explique comment utiliser la commande od avec quelques exemples.
La syntaxe de base de cette commande est :
od [OPTION]... [FILE]...
1. Afficher le contenu du fichier au format octal en utilisant l'option -b
Voici le fichier d'entrée utilisé pour cet exemple :
$ cat input 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Exécutez maintenant la commande od sur ce fichier d'entrée.
$ od -b input 0000000 061 012 062 012 063 012 064 012 065 012 066 012 067 012 070 012 0000020 071 012 061 060 012 061 061 012 061 062 012 061 063 012 061 064 0000040 012 061 065 012 061 066 012 061 067 012 061 070 012 061 071 012 0000060 062 060 012 0000063
Nous voyons donc que la sortie a été produite au format octal. La première colonne de la sortie de od représente le décalage d'octet dans le fichier.
2. Afficher le contenu du fichier au format caractère à l'aide de l'option -c
En utilisant le même fichier d'entrée (comme dans l'exemple 1 ci-dessus).
$ od -c input 0000000 1 \n 2 \n 3 \n 4 \n 5 \n 6 \n 7 \n 8 \n 0000020 9 \n 1 0 \n 1 1 \n 1 2 \n 1 3 \n 1 4 0000040 \n 1 5 \n 1 6 \n 1 7 \n 1 8 \n 1 9 \n 0000060 2 0 \n 0000063
Nous voyons donc que la sortie a été produite au format caractère.
3. Afficher les décalages d'octets dans différents formats à l'aide de l'option -A
Le décalage d'octet peut être affiché dans l'un des formats suivants :
- Hexadécimal (en utilisant -x avec -A)
- Octal (en utilisant -o avec -A)
- Décimal (en utilisant -d avec -A)
Voici les exemples de décalages dans différents formats :
$ od -Ax -c input 000000 1 \n 2 \n 3 \n 4 \n 5 \n 6 \n 7 \n 8 \n 000010 9 \n 1 0 \n 1 1 \n 1 2 \n 1 3 \n 1 4 000020 \n 1 5 \n 1 6 \n 1 7 \n 1 8 \n 1 9 \n 000030 2 0 \n 000033
$ od -Ad -c input 0000000 1 \n 2 \n 3 \n 4 \n 5 \n 6 \n 7 \n 8 \n 0000016 9 \n 1 0 \n 1 1 \n 1 2 \n 1 3 \n 1 4 0000032 \n 1 5 \n 1 6 \n 1 7 \n 1 8 \n 1 9 \n 0000048 2 0 \n 0000051
$ od -Ao -c input 0000000 1 \n 2 \n 3 \n 4 \n 5 \n 6 \n 7 \n 8 \n 0000020 9 \n 1 0 \n 1 1 \n 1 2 \n 1 3 \n 1 4 0000040 \n 1 5 \n 1 6 \n 1 7 \n 1 8 \n 1 9 \n 0000060 2 0 \n 0000063
Nous voyons donc que selon l'entrée fournie à l'option -A, la première colonne (qui contient le décalage d'octet) est affichée dans différents formats.
4. N'afficher aucune information de décalage à l'aide de l'option "-An"
Prenons l'exemple suivant :
$ od -An -c input 1 \n 2 \n 3 \n 4 \n 5 \n 6 \n 7 \n 8 \n 9 \n 1 0 \n 1 1 \n 1 2 \n 1 3 \n 1 4 \n 1 5 \n 1 6 \n 1 7 \n 1 8 \n 1 9 \n 2 0 \n
Nous voyons donc que les informations relatives au décalage d'octet n'étaient pas affichées.
5. Afficher la sortie après avoir sauté quelques octets
Ceci est réalisé en utilisant l'option -j. Voici un exemple :
$ od -j9 -c input 0000011 \n 6 \n 7 \n 8 \n 9 \n 1 0 \n 1 1 \n 1 0000031 2 \n 1 3 \n 1 4 \n 1 5 \n 1 6 \n 1 7 0000051 \n 1 8 \n 1 9 \n 2 0 \n 0000063
Si nous comparons la sortie ci-dessus avec la sortie de l'exemple 2, nous pouvons voir que les 9 octets initiaux ont été ignorés de la sortie.
6. Afficher un nombre limité d'octets dans la sortie à l'aide de l'option -N
C'est l'opposé de l'option -j discutée dans l'exemple 5 ci-dessus. Voici un exemple :
$ od -N9 -c input 0000000 1 \n 2 \n 3 \n 4 \n 5 0000011
Nous voyons donc que seuls 9 octets ont été affichés dans la sortie.
7. Afficher la sortie sous forme d'entiers décimaux à l'aide de l'option -i
Prenons l'exemple suivant :
$ od -i input 0000000 171051569 171182643 171313717 171444791 0000020 808520249 170995978 822751793 875629107 0000040 171258122 822752817 942737975 171520266 0000060 667698 0000063
Si nous combinons -i avec -b, cela donne plus d'informations sur la façon dont les entiers décimaux sont affichés. Voici un exemple :
$ od -ib input 0000000 171051569 171182643 171313717 171444791 061 012 062 012 063 012 064 012 065 012 066 012 067 012 070 012 0000020 808520249 170995978 822751793 875629107 071 012 061 060 012 061 061 012 061 062 012 061 063 012 061 064 0000040 171258122 822752817 942737975 171520266 012 061 065 012 061 066 012 061 067 012 061 070 012 061 071 012 0000060 667698 062 060 012 0000063
Ainsi, la sortie ci-dessus montre comment la sortie octale est affichée sous forme de sortie entière.
8. Afficher la sortie sous forme d'unités hexadécimales de 2 octets à l'aide de l'option -x
Prenons l'exemple suivant :
$ od -x input 0000000 0a31 0a32 0a33 0a34 0a35 0a36 0a37 0a38 0000020 0a39 3031 310a 0a31 3231 310a 0a33 3431 0000040 310a 0a35 3631 310a 0a37 3831 310a 0a39 0000060 3032 000a 0000063
Nous voyons donc que la sortie a été affichée en termes d'unités hexadécimales de 2 octets.
9. Afficher le contenu sous forme d'unités octales de deux octets à l'aide de l'option -o
Prenons l'exemple suivant :
$ od -o input 0000000 005061 005062 005063 005064 005065 005066 005067 005070 0000020 005071 030061 030412 005061 031061 030412 005063 032061 0000040 030412 005065 033061 030412 005067 034061 030412 005071 0000060 030062 000012 0000063
Notez que la commande od affiche la même sortie lorsqu'elle est exécutée sans aucune option. Voici un exemple :
$ od input 0000000 005061 005062 005063 005064 005065 005066 005067 005070 0000020 005071 030061 030412 005061 031061 030412 005063 032061 0000040 030412 005065 033061 030412 005067 034061 030412 005071 0000060 030062 000012 0000063
10. Personnalisez la largeur de sortie à l'aide de l'option -w
Prenons l'exemple suivant :
$ od -w1 -c -Ad input 0000000 1 0000001 \n 0000002 2 0000003 \n 0000004 3 0000005 \n 0000006 4 0000007 \n 0000008 5 0000009 \n 0000010 6 0000011 \n 0000012 7 0000013 \n 0000014 8 0000015 \n 0000016 9 0000017 \n 0000018 1 0000019 0 0000020 \n 0000021 1 * 0000023 \n 0000024 1 0000025 2 0000026 \n 0000027 1 0000028 3 0000029 \n 0000030 1 0000031 4 0000032 \n 0000033 1 0000034 5 0000035 \n 0000036 1 0000037 6 0000038 \n 0000039 1 0000040 7 0000041 \n 0000042 1 0000043 8 0000044 \n 0000045 1 0000046 9 0000047 \n 0000048 2 0000049 0 0000050 \n 0000051
Nous voyons donc que la largeur de sortie a été réduite à 1 dans la sortie ci-dessus.
11. Afficher les doublons à l'aide de l'option -v
Comme on peut l'observer dans la sortie de l'exemple 10 ci-dessus, un * a été imprimé. Ceci est fait pour supprimer la sortie de lignes identiques ou en double. Mais grâce à l'option -v, ces lignes peuvent également être imprimées. Voici un exemple :
$ od -w1 -v -c -Ad input 0000000 1 0000001 \n 0000002 2 0000003 \n 0000004 3 0000005 \n 0000006 4 0000007 \n 0000008 5 0000009 \n 0000010 6 0000011 \n 0000012 7 0000013 \n 0000014 8 0000015 \n 0000016 9 0000017 \n 0000018 1 0000019 0 0000020 \n 0000021 1 0000022 1 0000023 \n 0000024 1 0000025 2 0000026 \n 0000027 1 0000028 3 0000029 \n 0000030 1 0000031 4 0000032 \n 0000033 1 0000034 5 0000035 \n 0000036 1 0000037 6 0000038 \n 0000039 1 0000040 7 0000041 \n 0000042 1 0000043 8 0000044 \n 0000045 1 0000046 9 0000047 \n 0000048 2 0000049 0 0000050 \n 0000051
12. Acceptez l'entrée de la ligne de commande en utilisant –
Prenons l'exemple suivant :
$ od -c - The Geek Stuff0000000 T h e G e e k S t u f f 0000016
Nous voyons donc que l'entrée a d'abord été donnée via stdin, puis après avoir appuyé plusieurs fois sur ctrl + d, la sortie de la commande od s'est affichée.
13. Afficher les caractères masqués à l'aide de la commande od
Considérez l'entrée suivante :
The Geek ^MStuff
Si un fichier contenant la chaîne ci-dessus est imprimé à l'aide de la commande cat, la sortie suivante s'affiche :
$ cat input Stuffeek
Mais comme vous pouvez le voir, ce n'est pas exactement ce que contient le fichier.
Utilisons maintenant la commande od avec l'option -c sur ceci :
$ od -c input 0000000 T h e G e e k \r S t u f f \n 0000020
Ainsi, la commande od affiche clairement qu'un retour chariot sans saut de ligne a été inséré entre les chaînes en raison desquelles une sortie erronée était affichée par la commande cat.