Problem: xxd: cannot reverse a bit dump Solution: implement reversing the bit dump using -b -r closes: #13286 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: tristhaus <tristhaus@yahoo.de>
		
			
				
	
	
		
			390 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			390 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .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 lub standardowego wejścia.
 | |
| 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 binarnego łatania plików.
 | |
| .SH OPCJE
 | |
| Jeśli nie podano
 | |
| .I plik_we
 | |
| xxd czyta ze standardowego wejścia.
 | |
| Jeśli określono
 | |
| .I plik_we
 | |
| 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 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ń \-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ą wszędzie dozwolone.
 | |
| .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 bezwględnego (lub względnego) offsetu 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: przed 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ą po cichu 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 cokolwiek
 | |
| co wygląda jak para znaków 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. '+' 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ć!)...
 | |
| .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\fR
 | |
| .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\fR
 | |
| .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\fR
 | |
| .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\fR
 | |
| .PP
 | |
| .br
 | |
| Wypisz trzy linie (heksowe 0x30 bajtów) z końca
 | |
| .B pliku
 | |
| \.
 | |
| .br
 | |
| \fI% xxd \-s \-0x30 plik\fR
 | |
| .PP
 | |
| .br
 | |
| Wypisz 120 bajtów jako ciągły zrzut heksowy z 20 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
 |