GNU/Linux >> Tutoriales Linux >  >> Linux

Tutorial de comandos Linux xxd para principiantes (con ejemplos)

¿Necesita un volcado hexadecimal para un archivo de texto? ¿Está buscando una utilidad de línea de comandos que pueda hacer esto? Bueno, estás de suerte, ya que existe un comando denominado xxd que puede hacer esto por ti. En este tutorial, discutiremos xxd usando algunos ejemplos fáciles de entender. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos aquí se han probado en una máquina con Ubuntu 18.04 LTS.

¿Para qué se usa el comando Linux xxd?

El comando xxd en Linux le permite crear un volcado hexadecimal o incluso hacer lo contrario. La siguiente es su sintaxis:

xxd [OPTIONS] [file]

Y así es como lo explica la página de manual de la herramienta:

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.

Los siguientes son algunos ejemplos de estilo de preguntas y respuestas que le darán una mejor idea de cómo funciona xxd.

P1. ¿Cómo usar el comando xxd?

Es sencillo. Por ejemplo, suponga que tiene un archivo de texto 'test.txt' con el contenido que se muestra a continuación:

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

Así es como puede usar xxd para convertir el contenido del archivo en hexadecimal:

xxd test.txt

Y aquí está el resultado:

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.

P2. ¿Cómo omitir algunas líneas con xxd?

Suponga que no desea un volcado hexadecimal del archivo completo. En cambio, desea que la herramienta comience a convertir desde una línea específica. Entonces esto se puede lograr usando el comando -s.

Por ejemplo, si desea que xxd produzca un volcado hexadecimal desde la línea 3 en adelante, así es como le dice a xxd que lo haga:

xxd -s 0x30 test.txt

Aquí está la salida producida:

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.

Entonces puede ver que el volcado hexadecimal se produce desde la línea 3 en adelante en este caso.

P3. ¿Cómo limitar la salida xxd a una longitud particular?

En la sección anterior, discutimos cómo hacer que xxd comience a convertir desde un punto en particular. Pero también hay una forma de limitar su conversión a un punto en particular. Esto se puede hacer usando la opción de línea de comandos -l.

Por ejemplo, para asegurarse de que xxd cree un volcado solo para las primeras tres líneas de test.txt, utilícelo de la siguiente manera:

xxd -l 0x30 test.txt

Aquí está la salida que produjo:

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

P4. ¿Cómo establecer la longitud de la columna?

Si desea que xxd produzca menos o más columnas en la salida, use la opción -c y especifique el número de columnas allí. Aquí hay un comando de ejemplo usando esta opción:

xxd -c 5 test.txt

Y aquí está el resultado:

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.

Entonces puede ver que solo se produjeron 5 columnas en la salida.

P5. ¿Cómo hacer que xxd produzca un volcado binario?

Sí, esto también es posible. La opción de línea de comando -b hace que xxd produzca un volcado en dígitos binarios. Esto es lo que dice la página de manual sobre esta herramienta:

-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.

He aquí un ejemplo:

Conclusión

Como puede ver, el comando xxd es útil si maneja contenidos de archivos hexadecimales y binarios. Aquí, en este tutorial, acabamos de discutir algunas opciones básicas que ofrece xxd. Una vez que haya terminado de practicar estos, diríjase a la página de manual de la herramienta para obtener más información al respecto.


Linux
  1. Linux expand Command Tutorial para principiantes (con ejemplos)

  2. Tutorial de comando de factor Linux para principiantes (con ejemplos)

  3. Tutorial de comando yes de Linux para principiantes (con ejemplos)

  4. Tutorial de comandos para usuarios de Linux para principiantes (con ejemplos)

  5. Tutorial de comando Linux sum para principiantes (con ejemplos)

Tutorial de comando Linux sha1sum para principiantes (con ejemplos)

Tutorial de comandos de apariencia de Linux para principiantes (con ejemplos)

Tutorial del comando lsattr de Linux para principiantes (con ejemplos)

Tutorial del comando tload de Linux para principiantes (con ejemplos)

Tutorial del comando Linux znew para principiantes (con ejemplos)

Tutorial de comando Linux tr para principiantes (con ejemplos)