table of contents
XXD(1) | General Commands Manual | XXD(1) |
NAZWA¶
xxd - zrzut pliku do hex lub odwrotnie
SYNOPSIS¶
xxd -h[elp]
xxd [opcje] [plik_we [plik_wy]]
xxd -r[evert] [opcje] [plik_we [plik_wy]]
OPIS¶
xxd tworzy zrzut heksowy podanego pliku lub standardowego wej¶cia. Mo¿e tak¿e przetworzyæ zrzut heksowy z powrotem do oryginalnej, binarnej formy. Podobnie jak uuencode(1) i uudecode(1) pozwala na przekazanie danych binarnych w bezpiecznej w poczcie formie ASCII, ale ma zalety dekodowania na standardowe wyj¶cie. Ponadto mo¿na go u¿yæ do binarnego ³atania plików.
OPCJE¶
Je¶li nie podano plik_we xxd czyta ze standardowego wej¶cia. Je¶li okre¶lono plik_we jako znak `-' wtedy dane wej¶ciowe czytane s± ze standardowego wej¶cia. Je¶li nie podano plik_wy (lub podano jako `-' ), wyniki s± wysy³ane na standardowe wyj¶cie.
Pamiêtaj, ¿e u¿yty zosta³ "leniwy" parser, który nie sprawdza wiêcej ni¿ pierwszej litery opcji (o ile ta nie zosta³a obdarzona parametrem). Spacje miêdzy jedno literowymi opcjami i ich parametrami s± opcjonalne. Parametry opcji mog± byæ okre¶lone w notacji dziesiêtnej, heksadecymalej lub oktalnej. St±d -c8, -c 8, -c 010 i -cols 8 s± sobie równowa¿ne.
- -a | -autoskip
- prze³±cza autoskip: pojedyncza '*' zastêpuje linie nul. Domy¶lnie wy³±czone.
- -b | -bits
- Prze³±cza do zrzutu bitowego (cyfr binarnych) zamiast heksowego. Opcja ta zapisuje oktety jako osiem cyfr 1 lub 0 zamiast normalnego zrzutu heksowego. Ka¿da linia jest poprzedzona przez heksadecymalny numer linii a po nim jego reprezentacj± w ascii (lub ebcdic). Opcje linii poleceñ -r, -p, -i nie dzia³aj± w tym trybie.
- -c cols | -cols cols
- formatuje liczbê <cols> oktetów na wiersz. Domy¶lnie 16 (-i: 12, -ps: 30, -b: 6). Maks. 256.
- -E | -EBCDIC
- zmienia kodowanie znaków w prawej kolumnie z ASCII na EBCDIC. Nie zmienia prezentacji heksadecymalej. Opcja nie dzia³a w po³±czeniu z -r, -p lub -i.
- -g bajtów | -groupsize bajtów
- oddziela wyj¶cie ka¿dych <bajtów> bajtów (dwa heksowe znaki lub osiem cyfr binarnych ka¿de) przez bia³y znak. Okre¶l -g 0 by wy³±czyæ grupowanie. <Bajtów> domy¶lnie jest 2 w trybie normalnym i 1 w trybie bitów. Grupowanie nie dzia³a w trybie postscriptu lub w³±czania.
- -h | -help
- wypisuje podsumowanie dostêpnych poleceñ i koñczy dzia³anie. Nie zostaje przeprowadzony ¿aden zrzut.
- -i | -include
- wyj¶cie w stylu w³±czania pliku w C. Zostaje zapisana kompletna statyczna tablica definicji (nazwana wed³ug pliku wej¶cia), o ile xxd nie czyta ze standardowego wej¶cia.
- -l len |-len len
- zakoñcz po wypisaniu <len> oktetów.
- -p | -ps | -postscript | -plain
- wyj¶cie w postcriptowym ci±g³ym stylu zrzutu heksowego. Znany tak¿e jako zwyk³y zrzut heksowy.
- -r | -revert
- odwróæ operacjê: przekonwertuj (lub za³ataj) zrzut heksowy w binarkê. Je¶li nie zapisuje na standardowe wyj¶cie, xxd zapisze plik wyj¶ciowy bez obcinania go. U¿yj kombinacji -r -p by odczytaæ zwyk³y zrzut heksadecymalny bez numerów linii i okre¶lonego uk³adu kolumn. Dodatkowe bia³e znaki i ³amanie wierszy s± wszêdzie dozwolone.
- -seek offset
- Kiedy u¿yty po -r: odwraca z <offset> dodanym do pozycji w pliku odnalezionym w zrzucie heksowym.
- -s [+][-]seek
- zaczyna na <seek> bajtów bezwglêdnego (lub wzglêdnego) offsetu pliku wej¶ciowego. + wskazuje, ¿e seek jest wzglêdne do bie¿±cej pozycji pliku (bez znaczenia je¶li nie wczytuje ze standardowego wej¶cia). - wskazuje ¿e seek powinno byæ o tyle znaków od koñca wej¶cia (lub je¶li po³±czone z +: przed bie¿±c± pozycj± pliku na standardowym wej¶ciu). Bez opcji -s xxd zaczyna od bie¿±cej pozycji w pliku.
- -u
- u¿yj wielkich liter w znakach heksowych. Domy¶lnie s± ma³e znaki.
- -v | -version
- pokazuje wersjê programu.
OSTRZE¯ENIA¶
xxd -r potrafi okre¶liæ numery linii. Je¶li plik wyj¶cia jest mo¿liwy do przeszukania wtedy numery linii na pocz±tku wiersza zrzutu heksowego mog± byæ nie po kolei, mo¿e brakowaæ wierszy lub nak³adaæ siê na siebie. W takich wypadkach xxd u¿yje lseek(2) by znale¼æ nastêpn± pozycjê. Je¶li plik wyj¶ciowy nie jest mo¿liwy do przeszukania mo¿liwe s± tylko przerwy, które zostan± wype³nione bajtami null.
xxd -r nigdy nie podaje b³êdów analizy. ¦mieci s± po cichu ignorowane.
W czasie edycji zrzutów heksowych, proszê zauwa¿yæ ¿e xxd -r pomija wszystko w linii wej¶cia po odczytaniu wystarczaj±cej ilo¶ci kolumn danych heksadecymalnych (zobacz opcjê -c). Oznacza to tak¿e, ¿e zmiany w drukowanych kolumnach ascii (lub ebcdic) s± zawsze ignorowane. Odwrócenie zwyk³ego (lub postscriptowego) stylu zrzutu poprzez xxd -r -p nie zale¿y od kolejno¶ci kolumn. Tutaj cokolwiek co wygl±da jak para znaków heks jest interpretowane.
Zauwa¿ ró¿nicê miêdzy
% xxd -i plik
i
% xxd -i < plik
xxd -s +seek mo¿e byæ ró¿ne od xxd -s seek, poniewa¿ lseek(2) jest u¿yty do "przewiniêcie" wej¶cia. '+' stanowi ró¿nicê je¶li ¼ród³em wej¶cia jest standardowe wej¶cie i je¶li pozycja w pliku ze standardowego wej¶cia nie jest pocz±tkiem pliku w chwili uruchomienia xxd. Nastêpuj±ce przyk³ady mog± wyja¶niæ (lub bardziej zmyliæ!)...
Przewiñ standardowe wej¶cie przed przeczytaniem;
potrzebne poniewa¿ `cat' ju¿ odczyta³ do koñca
standardowego wej¶cia.
% sh -c 'cat > zwyk³a_kopia; xxd -s 0 > hex_kopia' <
plik
Zrzut heksowy od pozycji pliku 0x480 (=1024+128) w przód.
Znak `+' oznacza "wzglêdny wobec bie¿±cej
pozycji", st±d `128' dodaje do 1k gdzie zakoñczy³
dd.
% sh -c 'dd of=plain_snippet bs=1k count=1; xxd -s +128 > hex_snippet'
< file
Zrzut heksowy od pozycji pliku 0x100 ( = 1024-768) dalej.
% sh -c 'dd of=plain_snippet bs=1k count=1; xxd -s +-768 > hex_snippet'
< file
Jakkolwiek, jest to rzadka sytuacja i u¿ycie `+' jest rzadko potrzebne. Autor woli monitorowaæ dzia³anie xxd przy pomocy strace(1) lub truss(1) kiedy -s jest u¿yte.
PRZYK£ADY¶
Wypisz wszystko z wyj±tkiem pierwszych trzech linii
(heksowe 0x30 bajtów) pliku
% xxd -s 0x30 plik
Wypisz trzy linie (heksowe 0x30 bajtów) z koñca
pliku
% xxd -s -0x30 plik
Wypisz 120 bajtów jako ci±g³y zrzut heksowy z
20 oktetami na liniê.
% xxd -l 120 -ps -c 20 xxd.1
2e54482058584420312022417567757374203139
39362220224d616e75616c207061676520666f72
20787864220a2e5c220a2e5c222032317374204d
617920313939360a2e5c22204d616e2070616765
20617574686f723a0a2e5c2220202020546f6e79
204e7567656e74203c746f6e79407363746e7567
Zrzut heksowy z pierwszymi 120 bajtami tej strony
podrêcznika z 12 oktetami na liniê.
% xxd -l 120 -c 12 xxd.1
0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A
000000c: 7567 7573 7420 3139 3936 2220 ugust 1996"
0000018: 224d 616e 7561 6c20 7061 6765 "Manual page
0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\
0000030: 220a 2e5c 2220 3231 7374 204d "..\" 21st M
000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\"
0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut
0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\"
0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent
000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug
Poka¿ tylko datê z pliku xxd.1
% xxd -s 0x36 -l 13 -c 13 xxd.1
0000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996
Kopiuj plik_we do plik_wy i poprzed¼ 100
bajtami o warto¶ci 0x00.
% xxd plik_we | xxd -r -s 100 > plik_wy
Podmieñ datê w pliku xxd.1
% echo '0000037: 3574 68' | xxd -r - xxd.1
% xxd -s 0x36 -l 13 -c 13 xxd.1
0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996
Utwórz plik o 65537 bajtach, wszystkich równych
0x00, z wyj±tkiem ostatniego, który ma byæ 'A' (hex
0x41).
% echo '010000: 41' | xxd -r > plik
Zrzut heksowy tego pliku z autoskipem.
% xxd -a -c 12 plik
0000000: 0000 0000 0000 0000 0000 0000 ............
*
000fffc: 0000 0000 40 ....A
Utwórz jedno bajtowy plik zawieraj±cy
pojedncz± literê 'A'. Liczba po '-r -s' dodaje numery linii
znalezione w pliku; w efekcie poprzedzaj±ce bajty s± ukryte.
% echo '010000: 41' | xxd -r -s -0x10000 > plik
U¿yj xxd jako filtra wewn±trz edytora takiego jak
vim(1) aby uzyskaæ zrzut heksowy zakresu miêdzy
markerami `a' i `z'.
:'a,'z!xxd
U¿yj xxd jako filtra wewn±trz edytora takiego jak
vim(1) by odzyskaæ binarny zrzut heksowy zakresu
pomiêdzy markerami `a' i `z'.
:'a,'z!xxd -r
U¿yj xxd jako filtra wewn±trz edytora takiego jak
vim(1) by odzyskaæ jedn± liniê zrzutu heksowego.
Przejd¼ z kursorem na liniê i wpisz:
!!xxd -r
Odczytaj pojednycze znaki z portu szeregowego
% xxd -c1 < /dev/term/b &
% stty < /dev/term/b -echo -opost -isig -icanon min 1
% echo -n foo > /dev/term/b
ZWRACANE WARTO¦CI¶
Zwracane s± nastêpuj±ce warto¶ci b³êdów:
- 0
- nie znaleziono b³êdów.
- -1
- operacja nie jest wspierana ( xxd -r -i ca³y czas niemo¿liwa).
- 1
- b³±d w czasie analizowania opcji.
- 2
- problemy z plikiem wej¶ciowym.
- 3
- problemy z plikiem wyj¶ciowym.
- 4,5
- ¿±dana pozycja jest nieosi±galna.
ZOBACZ TAK¯E¶
OSTRZE¯ENIA¶
Dziwaczno¶æ narzêdzi dorównuje dziwaczno¶ci mózgu twórcy. U¿ywaj wy³±cznie na w³asn± odpowiedzialno¶æ. Kopiuj pliki. Analizuj je. Stañ siê czarodziejem.
WERSJA¶
Strona podrêcznika opisuje xxd w wersji 1.7
AUTOR¶
(c) 1990-1997 by Juergen Weigert
<jnweiger@informatik.uni-erlangen.de>
Kopiuj do woli i podaj moje dane,
zarabiaj pieni±dze i dziel siê ze mn±,
traæ pieni±dze i nie miej do mnie pretensji.
Strona podrêcznika zapocz±tkowana przez Tony'ego
Nugenta
<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
Ma³e zmiany: Bram Moolenaar. Redakcja: Juergen Weigert.
Sierpieñ 1996 | Strona podrêcznika dla xxd |