table of contents
HEXDUMP(1) | General Commands Manual | HEXDUMP(1) |
NAZWA¶
hexdump
— zrzut
ascii, dziesiętny, szesnastkowy, ósemkowy
SKŁADNIA¶
hexdump
[-bcdovx
]
[-e
napis_formatu]
[-f
plik_formatu]
[-n
długość]
[-s
pomiń]
plik ...
OPIS¶
Narzędzie hexdump jest filtrem, który wyświetla podane pliki, lub standardowe wejście, jeśli nie podano plików, używając do tego celu podanego przez użytkownika formatu.
Opcje są następujące
-b
- Jednobajtowe wyświetlanie ósemkowe. Wyświetl szesnastkowo offset wejściowy, a za nim szesnaście, trójkolumnowych, oddzielonych spacjami, wypełnionych zerami bajtów wejściowych w formacie ósemkowym.
-c
- Jednobajtowe wyświetlanie znakowe. Wyświetl szesnastkowo offset wejściowy, a za nim szesnaście, trójkolumnowych, oddzielonych spacjami bajtów w formacie ascii.
-d
- Dwubajtowe wyświetlanie dziesiętne. Wyświetl szesnastkowo offset wejściowy, a za nim osiem, pięciokolumnowych, oddzielonych spacjami, wypełnionych zerami jednostek dwubajtowych, zawierających dane wejściowe, w formacie dziesiętnym.
-e
napis_formatu- Podaje napis formatujący, którego użyć do wyświetlania danych.
-f
plik_formatu- Podaje plik, który zawiera jeden, lub więcej, oddzielonych
nową linią napisów formatujących. Puste linie,
oraz linie zaczynające się od krzyżyka
(
#
) są ignorowane. -n
długość- Interpretuj tylko długość bajtów wejścia.
-o
- Dwubajtowe wyświetlanie ósemkowe. Wyświetl szesnastkowo offset wejściowy, a za nim osiem szeciokolumnowych, oddzielonych spacjami, wypełnionych zerami, dwubajtowych fragmentów danych wejściowych, w formacie ósemkowym.
-s
offset- Pomiń offset bajtów, licząc od
początku wejścia. Domyślnie
offset jest interpretowany jako liczba
dziesiętna. Po poprzedzeniu go przedrostkiem
0x
lub0X
, jest interpretowany jako liczba szesnastkowa, a jeśli jest poprzedzony prowadzącym0
, to jest interpretowany jako liczba ósemkowa. Dołączenie do offsetu znakub
,k
, lubm
powoduje, że jest on interpretowany jako wielokrotność odpowiednio512
,1024
, lub1048576
. -v
- Opcja
-v
Powoduje wyświetlenie zrzutu wszystkich danych wejściowych. Bez opcji-v
, dowolna liczba grup linii wyjściowych, która będzie identyczna z bezpośrednio poprzedzającą grupą linii (poza offsetami wejściowymi), będzie zamieniana linią z gwiazdką. -x
- Dwubajtowe wyświetlanie szesnastkowe. Wyświetl szesnastkowo offset wejściowy, a za nim osiem, oddzielonych spacjami, czterokolumnowych, wypełnionych zerami, dwubajtowych fragmentów danych wejściowych, w formacie szesnastkowym.
Dla każdego pliku wejściowego
hexdump
kopiuje dane wejściowe na standardowe
wyjście, przekształcając dane według
napisów formatujących, podanych w opcjach
-e
i -f
, w wypadku gdy
były one podane.
Formaty¶
Napis formatujący składa się z dowolnej ilości jednostek formatujących, oddzielonych białą spacją. Jednostka formatująca składa się z maksymalnie trzech elementów: licznika iteracji, licznika bajtów i formatu.
Licznik iteracji jest opcjonalną dodatnią liczbą całkowitą, której wartość domyślna to jeden. Każdy format jest załączany tyle razy, ile wskazano w liczniku iteracji.
Licznik bajtów jest opcjonalną dodatnią liczbą całkowitą. Jeśli zostanie podana, to definiuje liczbę bajtów, które należy zinterpretować w każdej iteracji formatu.
Jeśli podano licznik iteracji i/lub bajtów, to po liczniku iteracji i/lub przed licznikiem bajtów trzeba umieścić ukośnik, aby móc je rozróżnić. Białe spacje przed ukośnikiem są ignorowane.
Format jest częścią wymaganą i musi być ujęty w podwójne cudzysłowy (" "). Jest on interpretowany jak napis formatujący fprintf (zobacz fprintf(3)), lecz z następującymi wyjątkami:
- Gwiazdka (*) nie może być używana do określania precyzji, lub szerokości pola.
- Liczba bajtów, lub dokładność pola jest wymagana dla każdego znaku konwersji ``s'' (w przeciwieństwie do fprintf(3) gdzie domyślnie, bez podanej precyzji, drukowany jest cały napis).
- Znaki konwersji ``h'', ``l'', ``n'', ``p'' i ``q'' nie są obsługiwane.
- Obsługiwane są następujące sekwencje eskejpowe
pojedynczych znaków, opisane w standardzie C:
NUL \0 <alert character> \a <backspace> \b <form-feed> \f <newline> \n <carriage return> \r <tab> \t <vertical tab> \v
Hexdump obsługuje również następujące dodatkowe napisy konwersji:
_a
[dox
]- Wyświetl offset wejściowy, kumulujący się na
przestrzeni plików wejściowych, wskazujący
następny wyświetlany bajt. Dodane znaki
d
,o
, ix
wskazują format wyświetlenia jako dziesiętny, ósemkowy, lub szesnastkowy. _A
[dox
]- Identyczne z napisem konwersji
_a
z tą tylko różnicą, że jest dokonywane tylko raz, po przetworzeniu wszystkich danych wejściowych. _c
- Drukuj znaki z domyślnego zestawu znaków. Niedrukowalne znaki są wyświetlane w trójznakowych, wypełnionych zerami sekwencjach ósemkowych, poza tymi, które są reprezentowane standardową notacją eskejpową (patrz wyżej), które są wyświetlane jako napisy znakowe.
_p
- Drukuj znaki z domyślnego zestawu znaków. Niedrukowane znaki
są wyświetlane jako pojedyncza kropka
“
.
”. _u
- Wyświetlaj znaki US-ASCII, z wyjątkiem znaków
sterujących, które są wyświetlane w
następujących określeniach. Znaki większe
niż 0xff, są wyświetlane jako napisy szesnastkowe.
000 nul 001\soh 0022stx 003 etx 004 eot 005enq 006 ack 007\bel 0088bs 009 ht 00A lf 00Bvt 00C ff 00D\cr 00E 00F si 010 dle 011dc1 012 dc2 013\dc3 0144dc4 0151nak 016 syn 017etb 018 can 019\em 01Ac 01C fs 01Dgs 01E rs 01F\us 0FFel
Domyślne i wspierane liczniki bajtów dla znaków konwersji są następujące:
Ilość danych, interpretowanych przez każdy napis formatujący jest sumą danych wymaganych przez każdą jednostką formatującą, która jest obliczana jako iteracja razy licznik bajtów.
Wejście jest obsługiwane w ``blokach'', gdzie blok jest zdefiniowany jako największa porcja danych, podanych przez dowolny z napisów formatujących. Napisy formatujące, które interpretują mniej danych niż zawartych jest w bloku wejściowym, w którym ostatnia jednostka formatująca interpretuje pewną liczbę bajtów i nie ma ustawionego określonwego licznka iteracji, mają zwiększany licznik iteracji, aż cały blok nie zostanie przetworzony, lub aż zabraknie danych do zadowolenia napisu formatującego.
Jeśli w wyniku specyfikacji użytkownika, lub modyfikacji licznika iteracji przez hexdump, licznik iteracji jest większy niż jeden, to podczas ostatniej iteracji nie są wyświetlane końcowe białe spacje.
Błędem jest podawanie licznika bajtów razem z
wieloma znakami/napisami konwersji, chyba że wszystkie poza jednym
znakiem/napisem konwersji są _a
lub
_A
.
Jeśli w wyniku podania opcji -n
osiągnięty zostanie EOF, dane wejściowe zadowolą
napis formatujący tylko częściowo, blok
wejściowy jest wypełniony zerami, wystarczająco aby
wyświetlić wszystkie dostępne dane (np. wszystkie
jednostki formatujące, zachodzące za koniec danych
będą wyświetlały jakąś
liczbę bajtów zera).
Dalsze wyjście takich napisów formatujących
jest zamieniane odpowiadającą ilością spacji.
Odpowiadająca ilość spacji jest zdefiniowana jako
liczba wyjścia spacji przez znak konwersji s
z tym samym polem i precyzją co oryginalny znak konwersji, lub napis
konwersji, lecz z usuniętymi wszelkimi znakami flag
“+
”, “ ”,
“#
” i wskazującym na napis
NULL.
Jeśli nie podano napisów formatujących,
domyślne wyświetlanie jest równoważne podaniu
opcji -x
.
hexdump
kończy działanie z
kodem zera po sukcesie i większym od zera po
błędzie.
PRZYKŁADY¶
Wyświetl wyjście w przestudiowanym formacie:
"%06.6_ao " 12/1 "%3_u " "\t\t" "%_p " "\n"
Implementuj opcję -x:
"%07.7_Ax\n" "%07.7_ax " 8/2 "%04x " "\n"
ZOBACZ TAKŻE¶
April 18, 1994 | Linux 5.14.0-427.18.1.el9_4.x86_64 |