Potřebujete hexadecimální výpis pro textový soubor? Hledáte nástroj příkazového řádku, který to dokáže? Máte štěstí, protože existuje příkaz nazvaný xxd který to může udělat za vás. V tomto tutoriálu budeme diskutovat o xxd pomocí několika snadno pochopitelných příkladů. Ale než to uděláme, stojí za zmínku, že všechny příklady zde byly testovány na počítači Ubuntu 18.04 LTS.
K čemu se používá příkaz Linux xxd?
Příkaz xxd v Linuxu vám umožňuje vytvořit hexdump nebo dokonce udělat opak. Následuje jeho syntaxe:
xxd [MOŽNOSTI] [soubor]
A zde je návod, jak to vysvětluje manuálová stránka nástroje:
xxd vytvoří hexadecimální výpis daného souboru nebo standardního vstupu. Může také převést hexadecimální výpis zpět do jeho původní binární podoby. Podobně jako
uuencode(1) a uudecode(1) umožňuje přenos binárních dat v reprezentaci ASCII „bezpečné pro poštu“, ale má výhodu
dekódování na standardní výstup. Navíc jej lze použít k provádění oprav binárních souborů.
Následuje několik příkladů ve stylu otázek a odpovědí, které by vám měly poskytnout lepší představu o tom, jak xxd funguje.
O1. Jak používat příkaz xxd?
Je to jednoduché. Předpokládejme například, že máte textový soubor 'test.txt' s obsahem, jak je uvedeno níže:
Ne.|Země|Ano/Ne
01|Indie|A
02|USA|A
03|Austrálie|A
04|Čína| N
05|Rusko|A
06|Japonsko|A
07|Singapur|A
08|Jižní Korea|N
09|Finsko| Y
10|Irsko|Y
Zde je návod, jak můžete pomocí xxd převést obsah souboru na hex:
xxd test.txt
A tady je výstup:
00000000:4e6f 2e7c 436f 756e 7472 797c 5965 732f Č.|Země|Ano/
00000010:4e6f 0a30 317c 4796e 200.07 00 02 00 0596e 4696e 2 537C 590A 3033 7C41 7573 7472 616C | US | Y.03 | Austral
00000030:6961 7C59 0A0A 3034 7C43 6869 6E61 7C4E IA | Y..04 | Čína | 7C59 0A30 367C .05 | Rusko | Y.06 |
00000050:4A61 7061 6E7C 590A 0A30 377C 5369 6E67 Japonsko Y.08|Jih
00000070:204b 6f72 6561 7c4e 0a30 397c 4669 6e61 Korea|N.09|Fina
00000080:6c61 67519964 67561906 67 619964 707>00000090:647c 590a d|Y.
O2. Jak přeskočit pár řádků pomocí xxd?
Předpokládejme, že nechcete hex výpis celého souboru. Místo toho chcete, aby nástroj začal převádět z určitého řádku. Pak toho lze dosáhnout pomocí příkazu -s.
Pokud například chcete, aby xxd vytvořilo hexadecimální výpis od řádku 3, pak takto řeknete xxd, aby to udělal:
xxd -s 0x30 test.txt
Zde je vytvořený výstup:
00000030:6961 7c59 0a0a 3034 7c43 6869 6e61 7c4e ia|Y..04|Čína|N
00000040:0a30 357c 57376 739.5 R 00000050:4A61 7061 6E7C 590A 0A30 377C 5369 6E67 Japonsko | y..07 | Sing
00000060:7061 6F72 6561 6C 6F72 7468 PAOOR 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.Takže můžete vidět, že v tomto případě je hexadecimální výpis vytvořen na řádku 3 a dále.
O3. Jak omezit výstup xxd na konkrétní délku?
V předchozí části jsme diskutovali o tom, jak přimět xxd začít konvertovat od určitého bodu. Existuje však také způsob, jak omezit jeho převod na určitý bod. To lze provést pomocí volby příkazového řádku -l.
Chcete-li se například ujistit, že xxd vytvoří výpis pouze pro první tři řádky souboru test.txt, použijte jej následujícím způsobem:
xxd -l 0x30 test.txtZde je výstup, který vytvořil:
00000000:4e6f 2e7c 436f 756e 7472 797c 5965 732f Č.|Země|Ano/
00000010:4e6f 0a30 317c 4796e 200.07 00 02 00 0596e 4696e 2 537c 590a 3033 7c41 7573 7472 616c |US|Y.03|Austrálie4. Jak nastavit délku sloupce?
Pokud chcete, aby xxd vytvořilo méně nebo více sloupců ve výstupu, použijte volbu -c a zadejte počet sloupců. Zde je příklad příkazu používajícího tuto volbu:
xxd -c 5 test.txtA tady je výstup:
00000000:4e6f 2e7c 43 č.|C
00000005:6f75 6e74 72 před
0000000a:797c 5965 73 y|0 f:3 y|006 /004 0.00>00000014:317c 496e 64 1|Ind
00000019:6961 7c59 0a ia|Y.
0000001e:3032 7c55 53<02|03 03:07
00000028:7c41 7573 74 |Aust
0000002d:7261 6c69 61 ralia
00000032:7c59 0a0a 30 |Y..0
00000041:3035 7c52 75 05|Ru
00000046:7373 6961 7c ssia|
0000004b:06 06 06 06/06 /06/06 /06 /06 7061 6e Japonsko
00000055:7c59 0a0a 30 |Y..0
0000005a:377c 5369 6e 7|Sin
0000005f<> 6770 20709 g:6770 20706f Y.0
00000069:387c 536f 75 8|Sou
0000006e:7468 204b 6f th Ko
00000073:7265 617c 4e / 07 04 03:9 9 F
0000007d:696e 616c 61 inala
00000082:6e64 7c59 0a nd|Y.
00000087:3130 7c49 72 10>60 008
00000091:7c59 0a |Y.Takže můžete vidět, že na výstupu bylo vyrobeno pouze 5 sloupců.
O5. Jak přimět xxd produkovat binární výpis?
Ano, i to je možné. Volba -b příkazového řádku způsobí, že xxd vytvoří výpis v binárních číslicích. Zde je to, co o tomto nástroji říká manuálová stránka:
-b | -bits
Přepne na výpis bitů (binární číslice) místo hexdump. Tato možnost zapíše oktety jako osm číslic „1“ a „0“ s namísto
normálního hexadecimálního výpisu. Každému řádku předchází číslo řádku v šestnáctkové soustavě a za ním následuje zobrazení
ascii (nebo ebcdic). Přepínače příkazového řádku -r, -p, -i v tomto režimu nefungují.Zde je příklad:
Závěr
Takže můžete vidět, že příkaz xxd je užitečný, pokud pracujete s hexadecimálním a binárním obsahem souborů. Zde, v tomto tutoriálu, jsme právě probrali některé základní možnosti, které xxd nabízí. Až si je procvičíte, přejděte na manuálovou stránku nástroje, kde se o něm dozvíte více.
Nainstalujte Red Hat Enterprise Linux Server z ISO obrazu Příkaz ukončení Linuxu vysvětlený pro začátečníky (s příklady)Linux