Tutorial de comandos Linux xxd para principiantes (con ejemplos)

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 xd 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. A continuación se muestra 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 deberían darle una mejor idea de cómo funciona xxd.

Q1. ¬ŅC√≥mo usar el comando xxd?

Es simple. 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á la salida:

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. ¬Ņ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 indica 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 en la línea 3 en adelante en este caso.

Q3. ¬Ņ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

Q4. ¬Ņ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á la salida:

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.

Aquí hay 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 herramienta p√°gina man para aprender m√°s al respecto.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *