blob: a28dd6377669170831340b1dcf1440d07054d25b [file] [log] [blame]
Bram Moolenaar899dddf2006-03-26 21:06:50 +00001.TH XXD 1 "Sierpień 1996" "Strona podręcznika dla xxd"
2.\"
3.\" 21st May 1996
4.\" Man page author:
5.\" Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
6.\" Changes by Bram Moolenaar <Bram@vim.org>
7.SH NAZWA
8.I xxd
9\- zrzut pliku do hex lub odwrotnie
10.SH SYNOPSIS
11.B xxd
12\-h[elp]
13.br
14.B xxd
15[opcje] [plik_we [plik_wy]]
16.br
17.B xxd
18\-r[evert] [opcje] [plik_we [plik_wy]]
19.SH OPIS
20.I xxd
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +010021tworzy zrzut heksowy podanego pliku lub standardowego wejścia.
Bram Moolenaar899dddf2006-03-26 21:06:50 +000022Może także przetworzyć zrzut heksowy z powrotem do oryginalnej,
23binarnej formy.
24Podobnie jak
25.BR uuencode (1)
26i
27.BR uudecode (1)
28pozwala na przekazanie danych binarnych w bezpiecznej w poczcie formie
29ASCII, ale ma zalety dekodowania na standardowe wyjście.
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +010030Ponadto można go użyć do binarnego łatania plików.
Bram Moolenaar899dddf2006-03-26 21:06:50 +000031.SH OPCJE
32Jeśli nie podano
33.I plik_we
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +010034xxd czyta ze standardowego wejścia.
Bram Moolenaar899dddf2006-03-26 21:06:50 +000035Jeśli określono
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +010036.I plik_we
Bram Moolenaar899dddf2006-03-26 21:06:50 +000037jako znak
38.RB \` \- '
39wtedy dane wejściowe czytane są ze standardowego wejścia.
40Jeśli nie podano
41.I plik_wy
42(lub podano jako
43.RB \` \- '
44), wyniki są wysyłane na standardowe wyjście.
45.PP
46Pamiętaj, że użyty został "leniwy" parser, który nie sprawdza więcej
47niż pierwszej litery opcji (o ile ta nie została obdarzona
48parametrem). Spacje między jedno literowymi opcjami i ich parametrami
49są opcjonalne. Parametry opcji mogą być określone w notacji dziesiętnej,
50heksadecymalej lub oktalnej.
51Stąd
52.BR \-c8 ,
53.BR "\-c 8" ,
54.B \-c 010
55i
56.B \-cols 8
57są sobie równoważne.
58.PP
59.TP
60.IR \-a " | " \-autoskip
61przełącza autoskip: pojedyncza '*' zastępuje linie nul. Domyślnie
62wyłączone.
63.TP
64.IR \-b " | " \-bits
65Przełącza do zrzutu bitowego (cyfr binarnych) zamiast heksowego.
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +010066Opcja ta zapisuje oktety jako osiem cyfr 1 lub 0 zamiast normalnego
Bram Moolenaar899dddf2006-03-26 21:06:50 +000067zrzutu heksowego. Każda linia jest poprzedzona przez
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +010068heksadecymalny numer linii a po nim jego reprezentacją w ascii (lub
tristhaus85f45212023-10-06 19:51:13 +020069ebcdic). Opcje linii poleceń \-p, \-i nie działają w tym
Bram Moolenaar899dddf2006-03-26 21:06:50 +000070trybie.
71.TP
72.IR "\-c cols " | " \-cols cols"
73formatuje liczbę
74.RI < cols >
75oktetów na wiersz. Domyślnie 16 (\-i: 12, \-ps: 30, \-b: 6). Maks.
76256.
77.TP
78.IR \-E " | "\-EBCDIC
79zmienia kodowanie znaków w prawej kolumnie z ASCII na EBCDIC.
80Nie zmienia prezentacji heksadecymalej. Opcja nie działa w połączeniu
81z \-r, \-p lub \-i.
82.TP
83.IR "\-g bajtów " | " \-groupsize bajtów"
84oddziela wyjście każdych
85.RI < bajtów >
86bajtów (dwa heksowe znaki lub osiem cyfr binarnych każde) przez biały
87znak.
88Określ
89.I \-g 0
90by wyłączyć grupowanie.
91.RI < Bajtów "> domyślnie jest " 2
92w trybie normalnym i \fI1\fP w trybie bitów.
93Grupowanie nie działa w trybie postscriptu lub włączania.
94.TP
95.IR \-h " | " \-help
96wypisuje podsumowanie dostępnych poleceń i kończy działanie. Nie
97zostaje przeprowadzony żaden zrzut.
98.TP
99.IR \-i " | " \-include
100wyjście w stylu włączania pliku w C. Zostaje zapisana kompletna
101statyczna tablica definicji (nazwana według pliku wejścia), o ile xxd
102nie czyta ze standardowego wejścia.
103.TP
104.IR "\-l len " | "\-len len"
105zakończ po wypisaniu
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100106.RI < len >
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000107oktetów.
108.TP
109.IR \-p " | " \-ps " | " \-postscript " | " \-plain
110wyjście w postcriptowym ciągłym stylu zrzutu heksowego. Znany także
111jako zwykły zrzut heksowy.
112.TP
113.IR \-r " | " \-revert
114odwróć operację: przekonwertuj (lub załataj) zrzut heksowy w binarkę.
115Jeśli nie zapisuje na standardowe wyjście, xxd zapisze plik wyjściowy
116bez obcinania go. Użyj kombinacji
117.I \-r \-p
118by odczytać zwykły zrzut heksadecymalny bez numerów linii
119i określonego układu kolumn. Dodatkowe białe znaki i łamanie wierszy
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100120są wszędzie dozwolone.
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000121.TP
122.I \-seek offset
123Kiedy użyty po
124.IR \-r :
125odwraca z
126.RI < offset >
127dodanym do pozycji w pliku odnalezionym w zrzucie heksowym.
128.TP
129.I \-s [+][\-]seek
130zaczyna na
131.RI < seek >
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100132bajtów bezwględnego (lub względnego) offsetu pliku wejściowego.
133\fI+ \fRwskazuje, że seek jest względne do bieżącej pozycji pliku (bez
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000134znaczenia jeśli nie wczytuje ze standardowego wejścia). \fI\- \fRwskazuje
135że seek powinno być o tyle znaków od końca wejścia (lub jeśli
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100136połączone z \fI+\fR: przed bieżącą pozycją pliku na standardowym
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000137wejściu).
138Bez opcji \-s xxd zaczyna od bieżącej pozycji w pliku.
139.TP
140.I \-u
141użyj wielkich liter w znakach heksowych. Domyślnie są małe znaki.
142.TP
143.IR \-v " | " \-version
144pokazuje wersję programu.
145.SH OSTRZEŻENIA
146.PP
147.I xxd \-r
148potrafi określić numery linii. Jeśli plik wyjścia jest możliwy do
149przeszukania wtedy numery linii na początku wiersza zrzutu heksowego
150mogą być nie po kolei, może brakować wierszy lub nakładać się na
151siebie. W takich wypadkach xxd użyje lseek(2) by znaleźć następną
152pozycję. Jeśli plik wyjściowy nie jest możliwy do przeszukania możliwe
153są tylko przerwy, które zostaną wypełnione bajtami null.
154.PP
155.I xxd \-r
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100156nigdy nie podaje błędów analizy. Śmieci są po cichu ignorowane.
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000157.PP
158W czasie edycji zrzutów heksowych, proszę zauważyć że
159.I xxd \-r
160pomija wszystko w linii wejścia po odczytaniu wystarczającej ilości
161kolumn danych heksadecymalnych (zobacz opcję \-c). Oznacza to także,
162że zmiany w drukowanych kolumnach ascii (lub ebcdic) są zawsze
163ignorowane. Odwrócenie zwykłego (lub postscriptowego) stylu zrzutu
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100164poprzez xxd \-r \-p nie zależy od kolejności kolumn. Tutaj cokolwiek
165co wygląda jak para znaków heks jest interpretowane.
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000166.PP
167Zauważ różnicę między
168.br
169\fI% xxd \-i plik\fR
170.br
171i
172.br
173\fI% xxd \-i < plik\fR
174.PP
175.I xxd \-s \+seek
176może być różne od
177.IR "xxd \-s seek" ,
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100178ponieważ lseek(2) jest użyty do "przewinięcie" wejścia. '+' stanowi
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000179różnicę jeśli źródłem wejścia jest standardowe wejście i jeśli pozycja
180w pliku ze standardowego wejścia nie jest początkiem pliku w chwili
181uruchomienia xxd. Następujące przykłady mogą wyjaśnić (lub bardziej
182zmylić!)...
183.PP
184Przewiń standardowe wejście przed przeczytaniem; potrzebne ponieważ
185`cat' już odczytał do końca standardowego wejścia.
186.br
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100187\fI% sh \-c 'cat > zwykła_kopia; xxd \-s 0 > hex_kopia' < plik\fR
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000188.PP
189Zrzut heksowy od pozycji pliku 0x480 (=1024+128) w przód.
190Znak `+' oznacza "względny wobec bieżącej pozycji", stąd `128' dodaje
191do 1k gdzie zakończył dd.
192.br
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100193\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file\fR
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000194.PP
195Zrzut heksowy od pozycji pliku 0x100 ( = 1024\-768) dalej.
196.br
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100197\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file\fR
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000198.PP
199Jakkolwiek, jest to rzadka sytuacja i użycie `+' jest rzadko
200potrzebne.
201Autor woli monitorować działanie xxd przy pomocy strace(1) lub truss(1) kiedy \-s jest użyte.
202.SH PRZYKŁADY
203.PP
204.br
205Wypisz wszystko z wyjątkiem pierwszych trzech linii (heksowe 0x30 bajtów)
206.B pliku
207\.
208.br
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100209\fI% xxd \-s 0x30 plik\fR
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000210.PP
211.br
212Wypisz trzy linie (heksowe 0x30 bajtów) z końca
213.B pliku
214\.
215.br
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100216\fI% xxd \-s \-0x30 plik\fR
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000217.PP
218.br
Bram Moolenaar9964e462007-05-05 17:54:07 +0000219Wypisz 120 bajtów jako ciągły zrzut heksowy z 20 oktetami na linię.
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000220.br
221\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
222.br
2232e54482058584420312022417567757374203139
224.br
22539362220224d616e75616c207061676520666f72
226.br
22720787864220a2e5c220a2e5c222032317374204d
228.br
229617920313939360a2e5c22204d616e2070616765
230.br
23120617574686f723a0a2e5c2220202020546f6e79
232.br
233204e7567656e74203c746f6e79407363746e7567
234.br
235
236.br
237Zrzut heksowy z pierwszymi 120 bajtami tej strony podręcznika z 12
238oktetami na linię.
239.br
240\fI% xxd \-l 120 \-c 12 xxd.1\fR
241.br
2420000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A
243.br
244000000c: 7567 7573 7420 3139 3936 2220 ugust 1996"
245.br
2460000018: 224d 616e 7561 6c20 7061 6765 "Manual page
247.br
2480000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\
249.br
2500000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M
251.br
252000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\"
253.br
2540000048: 4d61 6e20 7061 6765 2061 7574 Man page aut
255.br
2560000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\"
257.br
2580000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent
259.br
260000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug
261.PP
262.br
263Pokaż tylko datę z pliku xxd.1
264.br
265\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
266.br
2670000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996
268.PP
269.br
270Kopiuj
271.B plik_we
272do
273.B plik_wy
274i poprzedź 100 bajtami o wartości 0x00.
275.br
276\fI% xxd plik_we | xxd \-r \-s 100 \> plik_wy\fR
277.br
278
279.br
280Podmień datę w pliku xxd.1
281.br
282\fI% echo '0000037: 3574 68' | xxd \-r \- xxd.1\fR
283.br
284\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
285.br
2860000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996
287.PP
288.br
289Utwórz plik o 65537 bajtach, wszystkich równych 0x00,
290z wyjątkiem ostatniego, który ma być 'A' (hex 0x41).
291.br
292\fI% echo '010000: 41' | xxd \-r \> plik\fR
293.PP
294.br
295Zrzut heksowy tego pliku z autoskipem.
296.br
297\fI% xxd \-a \-c 12 plik\fR
298.br
2990000000: 0000 0000 0000 0000 0000 0000 ............
300.br
301*
302.br
303000fffc: 0000 0000 40 ....A
304.PP
305Utwórz jedno bajtowy plik zawierający pojednczą literę 'A'.
306Liczba po '\-r \-s' dodaje numery linii znalezione w pliku;
307w efekcie poprzedzające bajty są ukryte.
308.br
309\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> plik\fR
310.PP
311Użyj xxd jako filtra wewnątrz edytora takiego jak
312.B vim(1)
313aby uzyskać zrzut heksowy zakresu między markerami `a' i `z'.
314.br
315\fI:'a,'z!xxd\fR
316.PP
317Użyj xxd jako filtra wewnątrz edytora takiego jak
318.B vim(1)
319by odzyskać binarny zrzut heksowy zakresu pomiędzy markerami `a'
320i `z'.
321.br
322\fI:'a,'z!xxd \-r\fR
323.PP
324Użyj xxd jako filtra wewnątrz edytora takiego jak
325.B vim(1)
326by odzyskać jedną linię zrzutu heksowego. Przejdź z kursorem na linię
327i wpisz:
328.br
329\fI!!xxd \-r\fR
330.PP
331Odczytaj pojednycze znaki z portu szeregowego
332.br
333\fI% xxd \-c1 < /dev/term/b &\fR
334.br
335\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR
336.br
337\fI% echo \-n foo > /dev/term/b\fR
338.PP
339.SH "ZWRACANE WARTOŚCI"
340Zwracane są następujące wartości błędów:
341.TP
3420
343nie znaleziono błędów.
344.TP
345\-1
346operacja nie jest wspierana (
347.I xxd \-r \-i
348cały czas niemożliwa).
349.TP
3501
351błąd w czasie analizowania opcji.
352.TP
3532
354problemy z plikiem wejściowym.
355.TP
3563
357problemy z plikiem wyjściowym.
358.TP
3594,5
360żądana pozycja jest nieosiągalna.
361.SH "ZOBACZ TAKŻE"
362uuencode(1), uudecode(1), patch(1)
363.br
364.SH OSTRZEŻENIA
365Dziwaczność narzędzi dorównuje dziwaczności mózgu twórcy.
366Używaj wyłącznie na własną odpowiedzialność. Kopiuj pliki. Analizuj
367je. Stań się czarodziejem.
368.br
369.SH WERSJA
370Strona podręcznika opisuje xxd w wersji 1.7
371.SH AUTOR
372.br
373(c) 1990-1997 by Juergen Weigert
374.br
375<jnweiger@informatik.uni-erlangen.de>
376.LP
377Kopiuj do woli i podaj moje dane,
378.br
379zarabiaj pieniądze i dziel się ze mną,
380.br
381trać pieniądze i nie miej do mnie pretensji.
382.PP
383Strona podręcznika zapoczątkowana przez Tony'ego Nugenta
384.br
385<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
386.br
387Małe zmiany: Bram Moolenaar.
388Redakcja: Juergen Weigert.
389.PP