GNU/Linux >> Linux Esercitazione >  >> Linux

Tutorial sui comandi Linux xxd per principianti (con esempi)

Hai bisogno di un dump esadecimale per un file di testo? Alla ricerca di un'utilità della riga di comando in grado di farlo? Bene, sei fortunato, poiché esiste un comando chiamato xxd che può fare questo per te. In questo tutorial, discuteremo di xxd usando alcuni esempi di facile comprensione. Ma prima di farlo, vale la pena ricordare che tutti gli esempi qui presenti sono stati testati su una macchina Ubuntu 18.04 LTS.

A cosa serve il comando Linux xxd?

Il comando xxd in Linux ti consente di creare un hexdump o addirittura di fare il contrario. Di seguito è riportata la sua sintassi:

xxd [OPTIONS] [file]

Ed ecco come lo spiega la pagina man dello strumento:

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.

Di seguito sono riportati alcuni esempi in stile domande e risposte che dovrebbero darti un'idea migliore di come funziona xxd.

Q1. Come usare il comando xxd?

È semplice. Ad esempio, supponiamo di avere un file di testo 'test.txt' con contenuti come mostrato di seguito:

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

Ecco come puoi usare xxd per convertire il contenuto del file in esadecimale:

xxd test.txt

Ed ecco l'output:

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. Come saltare alcune righe con xxd?

Supponiamo di non voler eseguire il dump esadecimale del file completo. Invece, vuoi che lo strumento inizi a convertire da una linea specifica. Quindi questo può essere ottenuto usando il comando -s.

Ad esempio, se vuoi che xxd produca un dump esadecimale dalla riga 3 in poi, ecco come dici a xxd di farlo:

xxd -s 0x30 test.txt

Ecco l'output prodotto:

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.

Quindi puoi vedere che il dump esadecimale viene prodotto dalla riga 3 in poi in questo caso.

Q3. Come limitare l'output di xxd a una lunghezza particolare?

Nella sezione precedente, abbiamo discusso come fare in modo che xxd inizi a convertire da un punto particolare. Ma c'è anche un modo per limitare la sua conversione a un punto particolare. Questo può essere fatto usando l'opzione -l della riga di comando.

Ad esempio, per assicurarti che xxd crei dump solo per le prime tre righe di test.txt, utilizzalo nel modo seguente:

xxd -l 0x30 test.txt

Ecco l'output che ha prodotto:

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. Come impostare la lunghezza della colonna?

Se vuoi che xxd produca meno o più colonne nell'output, usa l'opzione -c e specifica il numero di colonne lì. Ecco un comando di esempio che utilizza questa opzione:

xxd -c 5 test.txt

Ed ecco l'output:

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.

Quindi puoi vedere solo 5 colonne sono state prodotte in output.

Q5. Come fare in modo che xxd produca un dump binario?

Sì, anche questo è possibile. L'opzione della riga di comando -b fa in modo che xxd produca un dump in cifre binarie. Ecco cosa dice la pagina man su questo strumento:

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

Ecco un esempio:

Conclusione

Quindi puoi vedere, il comando xxd è utile se gestisci contenuti di file esadecimali e binari. Qui, in questo tutorial, abbiamo appena discusso alcune opzioni di base offerte da xxd. Una volta che hai finito di esercitarti, vai alla pagina man dello strumento per saperne di più.


Linux
  1. Linux expand Command Tutorial per principianti (con esempi)

  2. Tutorial sui comandi di Linux factor per principianti (con esempi)

  3. Linux yes Command Tutorial per principianti (con esempi)

  4. Esercitazione sui comandi nproc Linux per principianti (con esempi)

  5. Tutorial sui comandi di sospensione di Linux per principianti (con esempi)

Linux sha1sum Command Tutorial per principianti (con esempi)

Tutorial sui comandi per l'aspetto di Linux per principianti (con esempi)

Esercitazione sui comandi lsattr Linux per principianti (con esempi)

Linux tload Command Tutorial per principianti (con esempi)

Linux znew Command Tutorial per principianti (con esempi)

Linux tr Command Tutorial per principianti (con esempi)