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 wejscia. Moze takze przetworzyc 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 wyjscie. Ponadto mozna go uzyc do binarnego latania plikow. OPCJE Jesli nie podano plik_we xxd czyta ze standardowego wejscia. Jesli okreslono plik_we jako znak `-' wtedy dane wejsciowe czytane sa ze standardowego wejscia. Jesli nie podano plik_wy (lub podano jako `-' ), wyniki sa wysylane na standardowe wyjscie. Pamietaj, ze uzyty zostal "leniwy" parser, ktory nie sprawdza wiecej niz pierwszej litery opcji (o ile ta nie zostala obdarzona parametrem). Spacje miedzy jedno literowymi opcjami i ich parametrami sa opcjonalne. Parametry opcji moga byc okreslone w notacji dziesietnej, heksadecymalej lub oktalnej. Stad -c8, -c 8, -c 010 i -cols 8 sa sobie rownowazne. -a | -autoskip przelacza autoskip: pojedyncza '*' zastepuje linie nul. Domyslnie wylaczone. -b | -bits Przelacza do zrzutu bitowego (cyfr binarnych) zamiast heksowego. Opcja ta zapisuje oktety jako osiem cyfr 1 lub 0 zamiast normalnego zrzutu heksowego. Kazda linia jest poprzedzona przez heksadecymalny numer linii a po nim jego reprezentacja w ascii (lub ebcdic). Opcje linii polecen -p, -i nie dzialaja w tym trybie. -c cols | -cols cols formatuje liczbe oktetow na wiersz. Domyslnie 16 (-i: 12, -ps: 30, -b: 6). Maks. 256. -E | -EBCDIC zmienia kodowanie znakow w prawej kolumnie z ASCII na EBCDIC. Nie zmienia prezentacji heksadecymalej. Opcja nie dziala w polaczeniu z -r, -p lub -i. -g bajtow | -groupsize bajtow oddziela wyjscie kazdych bajtow (dwa heksowe znaki lub osiem cyfr binarnych kazde) przez bialy znak. Okresl -g 0 by wylaczyc grupowanie. domyslnie jest 2 w trybie normalnym i 1 w trybie bitow. Grupowanie nie dziala w trybie postscriptu lub wlaczania. -h | -help wypisuje podsumowanie dostepnych polecen i konczy dzialanie. Nie zostaje przeprowadzony zaden zrzut. -i | -include wyjscie w stylu wlaczania pliku w C. Zostaje zapisana kompletna statyczna tablica definicji (nazwana wedlug pliku wejscia), o ile xxd nie czyta ze standardowego wejscia. -l len |-len len zakoncz po wypisaniu oktetow. -p | -ps | -postscript | -plain wyjscie w postcriptowym ciaglym stylu zrzutu heksowego. Znany takze jako zwykly zrzut heksowy. -r | -revert odwroc operacje: przekonwertuj (lub zalataj) zrzut heksowy w binarke. Jesli nie zapisuje na standardowe wyjscie, xxd zapisze plik wyjsciowy bez obcinania go. Uzyj kombinacji -r -p by odczytac zwykly zrzut heksadecymalny bez numerow linii i okreslonego ukladu kolumn. Dodatkowe biale znaki i lamanie wierszy sa wszedzie dozwolone. -seek offset Kiedy uzyty po -r: odwraca z dodanym do pozycji w pliku odnalezionym w zrzucie heksowym. -s [+][-]seek zaczyna na bajtow bezwglednego (lub wzglednego) offsetu pliku wejsciowego. + wskazuje, ze seek jest wzgledne do biezacej pozycji pliku (bez znaczenia jesli nie wczytuje ze standardowego wejscia). - wskazuje ze seek powinno byc o tyle znakow od konca wejscia (lub jesli polaczone z +: przed biezaca pozycja pliku na standardowym wejsciu). Bez opcji -s xxd zaczyna od biezacej pozycji w pliku. -u uzyj wielkich liter w znakach heksowych. Domyslnie sa male znaki. -v | -version pokazuje wersje programu. OSTRZEZENIA xxd -r potrafi okreslic numery linii. Jesli plik wyjscia jest mozliwy do przeszukania wtedy numery linii na poczatku wiersza zrzutu heksowego moga byc nie po kolei, moze brakowac wierszy lub nakladac sie na siebie. W takich wypadkach xxd uzyje lseek(2) by znalezc nastepna pozycje. Jesli plik wyjsciowy nie jest mozliwy do przeszukania mozliwe sa tylko przerwy, ktore zostana wypelnione bajtami null. xxd -r nigdy nie podaje bledow analizy. Smieci sa po cichu ignorowane. W czasie edycji zrzutow heksowych, prosze zauwazyc ze xxd -r pomija wszystko w linii wejscia po odczytaniu wystarczajacej ilosci kolumn danych heksadecymalnych (zobacz opcje -c). Oznacza to takze, ze zmiany w drukowanych kolumnach ascii (lub ebcdic) sa zawsze ignorowane. Odwrocenie zwyklego (lub postscriptowego) stylu zrzutu poprzez xxd -r -p nie zalezy od kolejnosci kolumn. Tutaj cokolwiek co wyglada jak para znakow heks jest interpretowane. Zauwaz roznice miedzy % xxd -i plik i % xxd -i < plik xxd -s +seek moze byc rozne od xxd -s seek, poniewaz lseek(2) jest uzyty do "przewiniecie" wejscia. '+' stanowi roznice jesli zrodlem wejscia jest standardowe wejscie i jesli pozycja w pliku ze standardowego wejscia nie jest poczatkiem pliku w chwili uruchomienia xxd. Nastepujace przyklady moga wyjasnic (lub bardziej zmylic!)... Przewin standardowe wejscie przed przeczytaniem; potrzebne poniewaz `cat' juz odczytal do konca standardowego wejscia. % sh -c 'cat > zwykla_kopia; xxd -s 0 > hex_kopia' < plik Zrzut heksowy od pozycji pliku 0x480 (=1024+128) w przod. Znak `+' oznacza "wzgledny wobec biezacej pozycji", stad `128' dodaje do 1k gdzie zakonczyl 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 uzycie `+' jest rzadko potrzebne. Autor woli monitorowac dzialanie xxd przy pomocy strace(1) lub truss(1) kiedy -s jest uzyte. PRZYKLADY Wypisz wszystko z wyjatkiem pierwszych trzech linii (heksowe 0x30 bajtow) pliku % xxd -s 0x30 plik Wypisz trzy linie (heksowe 0x30 bajtow) z konca pliku % xxd -s -0x30 plik Wypisz 120 bajtow jako ciagly zrzut heksowy z 20 oktetami na linie. % xxd -l 120 -ps -c 20 xxd.1 2e54482058584420312022417567757374203139 39362220224d616e75616c207061676520666f72 20787864220a2e5c220a2e5c222032317374204d 617920313939360a2e5c22204d616e2070616765 20617574686f723a0a2e5c2220202020546f6e79 204e7567656e74203c746f6e79407363746e7567 Zrzut heksowy z pierwszymi 120 bajtami tej strony podrecznika z 12 oktetami na linie. % 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 plik_wy Podmien date 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 Utworz plik o 65537 bajtach, wszystkich rownych 0x00, z wyjatkiem ostatniego, ktory ma byc '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 Utworz jedno bajtowy plik zawierajacy pojedncza litere 'A'. Liczba po '-r -s' dodaje numery linii znalezione w pliku; w efekcie poprzedzajace bajty sa ukryte. % echo '010000: 41' | xxd -r -s -0x10000 > plik Uzyj xxd jako filtra wewnatrz edytora takiego jak vim(1) aby uzyskac zrzut heksowy zakresu miedzy markerami `a' i `z'. :'a,'z!xxd Uzyj xxd jako filtra wewnatrz edytora takiego jak vim(1) by odzyskac binarny zrzut heksowy zakresu pomiedzy markerami `a' i `z'. :'a,'z!xxd -r Uzyj xxd jako filtra wewnatrz edytora takiego jak vim(1) by odzyskac jedna linie zrzutu heksowego. Przejdz z kursorem na linie 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 WARTOSCI Zwracane sa nastepujace wartosci bledow: 0 nie znaleziono bledow. -1 operacja nie jest wspierana ( xxd -r -i caly czas niemozliwa). 1 blad w czasie analizowania opcji. 2 problemy z plikiem wejsciowym. 3 problemy z plikiem wyjsciowym. 4,5 zadana pozycja jest nieosiagalna. ZOBACZ TAKZE uuencode(1), uudecode(1), patch(1) OSTRZEZENIA Dziwacznosc narzedzi dorownuje dziwacznosci mozgu tworcy. Uzywaj wylacznie na wlasna odpowiedzialnosc. Kopiuj pliki. Analizuj je. Stan sie czarodziejem. WERSJA Strona podrecznika opisuje xxd w wersji 1.7 AUTOR (c) 1990-1997 by Juergen Weigert Kopiuj do woli i podaj moje dane, zarabiaj pieniadze i dziel sie ze mna, trac pieniadze i nie miej do mnie pretensji. Strona podrecznika zapoczatkowana przez Tony'ego Nugenta Male zmiany: Bram Moolenaar. Redakcja: Juergen Weigert. Strona podrecznika dla xxd Sierpien 1996 XXD(1)