blob: 222151dc5235f58ee02c5bdf5edfd01d87eb3a4e [file] [log] [blame]
.TH XXD 1 "Sierpieñ 1996" "Strona podrêcznika dla xxd"
.\"
.\" 21st May 1996
.\" Man page author:
.\" Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
.\" Changes by Bram Moolenaar <Bram@vim.org>
.SH NAZWA
.I xxd
\- zrzut pliku do hex lub odwrotnie
.SH SYNOPSIS
.B xxd
\-h[elp]
.br
.B xxd
[opcje] [plik_we [plik_wy]]
.br
.B xxd
\-r[evert] [opcje] [plik_we [plik_wy]]
.SH OPIS
.I xxd
tworzy zrzut heksowy podanego pliku na standardowe wyj¶cie.
Mo¿e tak¿e przetworzyæ zrzut heksowy z powrotem do oryginalnej,
binarnej formy.
Podobnie jak
.BR uuencode (1)
i
.BR 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 przeprowadzenia ³atania plików binarnych.
.SH OPCJE
Je¶li nie podano
.I plik_we
xxd czyta ze standardowego wej¶cie.
Je¶li okre¶lono
.I plik_wy
jako znak
.RB \` \- '
wtedy dane wej¶ciowe czytane s± ze standardowego wej¶cia.
Je¶li nie podano
.I plik_wy
(lub podano jako
.RB \` \- '
), wyniki s± wysy³ane na standardowe wyj¶cie.
.PP
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
.BR \-c8 ,
.BR "\-c 8" ,
.B \-c 010
i
.B \-cols 8
s± sobie równowa¿ne.
.PP
.TP
.IR \-a " | " \-autoskip
prze³±cza autoskip: pojedyncza '*' zastêpuje linie nul. Domy¶lnie
wy³±czone.
.TP
.IR \-b " | " \-bits
Prze³±cza do zrzutu bitowego (cyfr binarnych) zamiast heksowego.
Opcja ta zapisuje oktety ajko osiem cyfr 1 lub 0 zamias normalnego
zrzutu heksowego. Ka¿da linia jest poprzedzona przez
heksadecymalny numer linii a za nim jego reprezentacja w ascii (lub
ebcdic). Opcje linii poleceñ \-r, \-p, \-i nie dzia³aj± w tym
trybie.
.TP
.IR "\-c cols " | " \-cols cols"
formatuje liczbê
.RI < cols >
oktetów na wiersz. Domy¶lnie 16 (\-i: 12, \-ps: 30, \-b: 6). Maks.
256.
.TP
.IR \-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.
.TP
.IR "\-g bajtów " | " \-groupsize bajtów"
oddziela wyj¶cie ka¿dych
.RI < bajtów >
bajtów (dwa heksowe znaki lub osiem cyfr binarnych ka¿de) przez bia³y
znak.
Okre¶l
.I \-g 0
by wy³±czyæ grupowanie.
.RI < Bajtów "> domy¶lnie jest " 2
w trybie normalnym i \fI1\fP w trybie bitów.
Grupowanie nie dzia³a w trybie postscriptu lub w³±czania.
.TP
.IR \-h " | " \-help
wypisuje podsumowanie dostêpnych poleceñ i koñczy dzia³anie. Nie
zostaje przeprowadzony ¿aden zrzut.
.TP
.IR \-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.
.TP
.IR "\-l len " | "\-len len"
zakoñcz po wypisaniu
.RI < len>
oktetów.
.TP
.IR \-p " | " \-ps " | " \-postscript " | " \-plain
wyj¶cie w postcriptowym ci±g³ym stylu zrzutu heksowego. Znany tak¿e
jako zwyk³y zrzut heksowy.
.TP
.IR \-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
.I \-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± dozwolone wszêdzie.
.TP
.I \-seek offset
Kiedy u¿yty po
.IR \-r :
odwraca z
.RI < offset >
dodanym do pozycji w pliku odnalezionym w zrzucie heksowym.
.TP
.I \-s [+][\-]seek
zaczyna na
.RI < seek >
bajtów abs. (lub wzg.) offsecie pliku wej¶ciowego.
\fI+ fRwskazuje, ¿e seek jest wzglêdne do bie¿±cej pozycji pliku (bez
znaczenia je¶li nie wczytuje ze standardowego wej¶cia). \fI\- \fRwskazuje
¿e seek powinno byæ o tyle znaków od koñca wej¶cia (lub je¶li
po³±czone z \fI+\fR: przezhd bie¿±c± pozycj± pliku na standardowym
wej¶ciu).
Bez opcji \-s xxd zaczyna od bie¿±cej pozycji w pliku.
.TP
.I \-u
u¿yj wielkich liter w znakach heksowych. Domy¶lnie s± ma³e znaki.
.TP
.IR \-v " | " \-version
pokazuje wersjê programu.
.SH OSTRZE¯ENIA
.PP
.I 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.
.PP
.I xxd \-r
nigdy nie podaje b³êdów analizy. ¦mieci s± ignorowane.
.PP
W czasie edycji zrzutów heksowych, proszê zauwa¿yæ ¿e
.I 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 cokolwiej
co wygl±da jak para cyfr heks jest interpretowane.
.PP
Zauwa¿ ró¿nicê miêdzy
.br
\fI% xxd \-i plik\fR
.br
i
.br
\fI% xxd \-i < plik\fR
.PP
.I xxd \-s \+seek
mo¿e byæ ró¿ne od
.IR "xxd \-s seek" ,
poniewa¿ lseek(2) jest u¿yty do "przewiniêcie" wej¶cia. '+' robi
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æ!)...
.PP
Przewiñ standardowe wej¶cie przed przeczytaniem; potrzebne poniewa¿
`cat' ju¿ odczyta³ do koñca standardowego wej¶cia.
.br
\fI% sh \-c 'cat > zwyk³a_kopia; xxd \-s 0 > hex_kopia' < plik
.PP
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.
.br
\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file
.PP
Zrzut heksowy od pozycji pliku 0x100 ( = 1024\-768) dalej.
.br
\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file
.PP
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.
.SH PRZYK£ADY
.PP
.br
Wypisz wszystko z wyj±tkiem pierwszych trzech linii (heksowe 0x30 bajtów)
.B pliku
\.
.br
\fI% xxd \-s 0x30 plik
.PP
.br
Wypisz trzy linie (heksowe 0x30 bajtów) z koñca
.B pliku
\.
.br
\fI% xxd \-s \-0x30 plik
.PP
.br
Wypisz 120 bajtów jako ci±g³y zrzut heksowy z 40 oktetami na liniê.
.br
\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
.br
2e54482058584420312022417567757374203139
.br
39362220224d616e75616c207061676520666f72
.br
20787864220a2e5c220a2e5c222032317374204d
.br
617920313939360a2e5c22204d616e2070616765
.br
20617574686f723a0a2e5c2220202020546f6e79
.br
204e7567656e74203c746f6e79407363746e7567
.br
.br
Zrzut heksowy z pierwszymi 120 bajtami tej strony podrêcznika z 12
oktetami na liniê.
.br
\fI% xxd \-l 120 \-c 12 xxd.1\fR
.br
0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A
.br
000000c: 7567 7573 7420 3139 3936 2220 ugust 1996"
.br
0000018: 224d 616e 7561 6c20 7061 6765 "Manual page
.br
0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\
.br
0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M
.br
000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\"
.br
0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut
.br
0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\"
.br
0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent
.br
000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug
.PP
.br
Poka¿ tylko datê z pliku xxd.1
.br
\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
.br
0000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996
.PP
.br
Kopiuj
.B plik_we
do
.B plik_wy
i poprzed¼ 100 bajtami o warto¶ci 0x00.
.br
\fI% xxd plik_we | xxd \-r \-s 100 \> plik_wy\fR
.br
.br
Podmieñ datê w pliku xxd.1
.br
\fI% echo '0000037: 3574 68' | xxd \-r \- xxd.1\fR
.br
\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
.br
0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996
.PP
.br
Utwórz plik o 65537 bajtach, wszystkich równych 0x00,
z wyj±tkiem ostatniego, który ma byæ 'A' (hex 0x41).
.br
\fI% echo '010000: 41' | xxd \-r \> plik\fR
.PP
.br
Zrzut heksowy tego pliku z autoskipem.
.br
\fI% xxd \-a \-c 12 plik\fR
.br
0000000: 0000 0000 0000 0000 0000 0000 ............
.br
*
.br
000fffc: 0000 0000 40 ....A
.PP
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.
.br
\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> plik\fR
.PP
U¿yj xxd jako filtra wewn±trz edytora takiego jak
.B vim(1)
aby uzyskaæ zrzut heksowy zakresu miêdzy markerami `a' i `z'.
.br
\fI:'a,'z!xxd\fR
.PP
U¿yj xxd jako filtra wewn±trz edytora takiego jak
.B vim(1)
by odzyskaæ binarny zrzut heksowy zakresu pomiêdzy markerami `a'
i `z'.
.br
\fI:'a,'z!xxd \-r\fR
.PP
U¿yj xxd jako filtra wewn±trz edytora takiego jak
.B vim(1)
by odzyskaæ jedn± liniê zrzutu heksowego. Przejd¼ z kursorem na liniê
i wpisz:
.br
\fI!!xxd \-r\fR
.PP
Odczytaj pojednycze znaki z portu szeregowego
.br
\fI% xxd \-c1 < /dev/term/b &\fR
.br
\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR
.br
\fI% echo \-n foo > /dev/term/b\fR
.PP
.SH "ZWRACANE WARTO¦CI"
Zwracane s± nastêpuj±ce warto¶ci b³êdów:
.TP
0
nie znaleziono b³êdów.
.TP
\-1
operacja nie jest wspierana (
.I xxd \-r \-i
ca³y czas niemo¿liwa).
.TP
1
b³±d w czasie analizowania opcji.
.TP
2
problemy z plikiem wej¶ciowym.
.TP
3
problemy z plikiem wyj¶ciowym.
.TP
4,5
¿±dana pozycja jest nieosi±galna.
.SH "ZOBACZ TAK¯E"
uuencode(1), uudecode(1), patch(1)
.br
.SH 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.
.br
.SH WERSJA
Strona podrêcznika opisuje xxd w wersji 1.7
.SH AUTOR
.br
(c) 1990-1997 by Juergen Weigert
.br
<jnweiger@informatik.uni-erlangen.de>
.LP
Kopiuj do woli i podaj moje dane,
.br
zarabiaj pieni±dze i dziel siê ze mn±,
.br
traæ pieni±dze i nie miej do mnie pretensji.
.PP
Strona podrêcznika zapocz±tkowana przez Tony'ego Nugenta
.br
<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
.br
Ma³e zmiany: Bram Moolenaar.
Redakcja: Juergen Weigert.
.PP