GNU/Linux >> Tutoriels Linux >  >> Linux

Tutoriel de commande Linux xxd pour les débutants (avec exemples)

Besoin d'un vidage hexadécimal pour un fichier texte ? Vous cherchez un utilitaire de ligne de commande capable de faire cela ? Eh bien, vous avez de la chance, car il existe une commande appelée xxd qui peut le faire pour vous. Dans ce didacticiel, nous aborderons xxd à l'aide d'exemples faciles à comprendre. Mais avant cela, il convient de mentionner que tous les exemples ici ont été testés sur une machine Ubuntu 18.04 LTS.

À quoi sert la commande Linux xxd ?

La commande xxd sous Linux vous permet de créer un vidage hexadécimal ou même de faire l'inverse. Voici sa syntaxe :

xxd [OPTIONS] [file]

Et voici comment la page de manuel de l'outil l'explique :

xxd  creates  a hex dump of a given file or standard input.  It can also convert a hex dump back to its original binary form.  Like
uuencode(1) and uudecode(1) it allows the transmission of binary data in a `mail-safe' ASCII representation, but has the  advantage
of decoding to standard output.  Moreover, it can be used to perform binary file patching.

Voici quelques exemples sous forme de questions-réponses qui devraient vous donner une meilleure idée du fonctionnement de xxd.

Q1. Comment utiliser la commande xxd ?

C'est simple. Par exemple, supposons que vous disposiez d'un fichier texte "test.txt" dont le contenu est illustré ci-dessous :

No.|Country|Yes/No
01|India|Y
02|US|Y
03|Australia|Y

04|China|N
05|Russia|Y
06|Japan|Y

07|Singapore|Y
08|South Korea|N
09|Finland|Y
10|Ireland|Y

Voici comment vous pouvez utiliser xxd pour convertir le contenu du fichier en hexadécimal :

xxd test.txt

Et voici le résultat :

00000000: 4e6f 2e7c 436f 756e 7472 797c 5965 732f  No.|Country|Yes/
00000010: 4e6f 0a30 317c 496e 6469 617c 590a 3032  No.01|India|Y.02
00000020: 7c55 537c 590a 3033 7c41 7573 7472 616c  |US|Y.03|Austral
00000030: 6961 7c59 0a0a 3034 7c43 6869 6e61 7c4e  ia|Y..04|China|N
00000040: 0a30 357c 5275 7373 6961 7c59 0a30 367c  .05|Russia|Y.06|
00000050: 4a61 7061 6e7c 590a 0a30 377c 5369 6e67  Japan|Y..07|Sing
00000060: 7061 6f72 657c 590a 3038 7c53 6f75 7468  paore|Y.08|South
00000070: 204b 6f72 6561 7c4e 0a30 397c 4669 6e61   Korea|N.09|Fina
00000080: 6c61 6e64 7c59 0a31 307c 4972 656c 616e  land|Y.10|Irelan
00000090: 647c 590a                                d|Y.

Q2. Comment sauter quelques lignes avec xxd ?

Supposons que vous ne vouliez pas de vidage hexadécimal du fichier complet. Au lieu de cela, vous souhaitez que l'outil commence la conversion à partir d'une ligne spécifique. Ensuite, cela peut être réalisé en utilisant la commande -s.

Par exemple, si vous voulez que xxd produise un vidage hexadécimal à partir de la ligne 3, voici comment vous dites à xxd de le faire :

xxd -s 0x30 test.txt

Voici la sortie produite :

00000030: 6961 7c59 0a0a 3034 7c43 6869 6e61 7c4e  ia|Y..04|China|N
00000040: 0a30 357c 5275 7373 6961 7c59 0a30 367c  .05|Russia|Y.06|
00000050: 4a61 7061 6e7c 590a 0a30 377c 5369 6e67  Japan|Y..07|Sing
00000060: 7061 6f72 657c 590a 3038 7c53 6f75 7468  paore|Y.08|South
00000070: 204b 6f72 6561 7c4e 0a30 397c 4669 6e61   Korea|N.09|Fina
00000080: 6c61 6e64 7c59 0a31 307c 4972 656c 616e  land|Y.10|Irelan
00000090: 647c 590a                                d|Y.

Vous pouvez donc voir que le vidage hexadécimal est produit à partir de la ligne 3 dans ce cas.

Q3. Comment limiter la sortie xxd à une longueur particulière ?

Dans la section précédente, nous avons expliqué comment faire en sorte que xxd commence la conversion à partir d'un point particulier. Mais il existe aussi un moyen de limiter sa conversion à un point particulier. Cela peut être fait en utilisant l'option de ligne de commande -l.

Par exemple, pour vous assurer que xxd crée un vidage uniquement pour les trois premières lignes de test.txt, utilisez-le de la manière suivante :

xxd -l 0x30 test.txt

Voici le résultat produit :

00000000: 4e6f 2e7c 436f 756e 7472 797c 5965 732f  No.|Country|Yes/
00000010: 4e6f 0a30 317c 496e 6469 617c 590a 3032  No.01|India|Y.02
00000020: 7c55 537c 590a 3033 7c41 7573 7472 616c  |US|Y.03|Austral

Q4. Comment définir la longueur des colonnes ?

Si vous voulez que xxd produise moins ou plus de colonnes dans la sortie, utilisez l'option -c et spécifiez-y le nombre de colonnes. Voici un exemple de commande utilisant cette option :

xxd -c 5 test.txt

Et voici le résultat :

00000000: 4e6f 2e7c 43  No.|C
00000005: 6f75 6e74 72  ountr
0000000a: 797c 5965 73  y|Yes
0000000f: 2f4e 6f0a 30  /No.0
00000014: 317c 496e 64  1|Ind
00000019: 6961 7c59 0a  ia|Y.
0000001e: 3032 7c55 53  02|US
00000023: 7c59 0a30 33  |Y.03
00000028: 7c41 7573 74  |Aust
0000002d: 7261 6c69 61  ralia
00000032: 7c59 0a0a 30  |Y..0
00000037: 347c 4368 69  4|Chi
0000003c: 6e61 7c4e 0a  na|N.
00000041: 3035 7c52 75  05|Ru
00000046: 7373 6961 7c  ssia|
0000004b: 590a 3036 7c  Y.06|
00000050: 4a61 7061 6e  Japan
00000055: 7c59 0a0a 30  |Y..0
0000005a: 377c 5369 6e  7|Sin
0000005f: 6770 616f 72  gpaor
00000064: 657c 590a 30  e|Y.0
00000069: 387c 536f 75  8|Sou
0000006e: 7468 204b 6f  th Ko
00000073: 7265 617c 4e  rea|N
00000078: 0a30 397c 46  .09|F
0000007d: 696e 616c 61  inala
00000082: 6e64 7c59 0a  nd|Y.
00000087: 3130 7c49 72  10|Ir
0000008c: 656c 616e 64  eland
00000091: 7c59 0a       |Y.

Ainsi, vous pouvez voir que seules 5 colonnes ont été produites en sortie.

Q5. Comment faire en sorte que xxd produise un dump binaire ?

Oui, c'est aussi possible. L'option de ligne de commande -b permet à xxd de produire un vidage en chiffres binaires. Voici ce que dit la page de manuel à propos de cet outil :

-b | -bits
Switch to bits (binary digits) dump, rather than hexdump.  This option writes octets as eight digits "1"s and  "0"s  instead
of  a  normal  hexadecimal  dump. Each line is preceded by a line number in hexadecimal and followed by an ascii (or ebcdic)
representation. The command line switches -r, -p, -i do not work with this mode.

Voici un exemple :

Conclusion

Vous pouvez donc voir que la commande xxd est utile si vous traitez le contenu de fichiers hexadécimaux et binaires. Ici, dans ce tutoriel, nous venons de discuter de quelques options de base offertes par xxd. Une fois que vous avez fini de vous entraîner, rendez-vous sur la page de manuel de l'outil pour en savoir plus.


Linux
  1. Linux expand Tutoriel de commande pour les débutants (avec exemples)

  2. Tutoriel de commande de facteur Linux pour les débutants (avec exemples)

  3. Linux oui Tutoriel de commande pour les débutants (avec exemples)

  4. Tutoriel de commande pour les utilisateurs Linux pour les débutants (avec exemples)

  5. Tutoriel de commande Linux sum pour les débutants (avec exemples)

Tutoriel de commande Linux sha1sum pour les débutants (avec exemples)

Tutoriel de commande Linux look pour les débutants (avec exemples)

Tutoriel de commande Linux lsattr pour les débutants (avec exemples)

Tutoriel de commande Linux tload pour les débutants (avec exemples)

Tutoriel de commande Linux znew pour les débutants (avec exemples)

Tutoriel de commande Linux tr pour les débutants (avec exemples)