HEXDUMP(1)

NAZWA
hexdump - zrzuca zawartość pliku szesnastkowo, dziesiętnie, ósemkowo lub w ascii

SKŁADNIA

hexdump [options] file ...

hd [options] file ...

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

Poniżej, po argumentach rozmiar i przesunięcie mogą występować przyrostki binarne (2^N): KiB (=1024), MiB (=1024*1024) i tak dalej dla GiB, TiB, PiB, EiB, ZiB oraz YiB (część "iB" jest opcjonalna, na przykład "K" ma to samo znaczenie, co "KiB") lub dziesiętne (10^N): KB (=1000), MB (=1000*1000) i podobnie dla GB, TB, PB, EB, ZB oraz YB.

-b, --one-byte-octal
    Jednobajtowe wyświetlanie ósemkowe. Wyświetla szesnastkowo przesunięcie wejściowe, a za nim szesnaście trójkolumnowych, oddzielonych spacjami, uzupełnionych zerami bajtów wejściowych w formacie ósemkowym, na wiersz.

-X, --one-byte-hex
    Jednobajtowe wyświetlanie szesnastkowe. Wyświetla szesnastkowo przesunięcie wejściowe, a za nim szesnaście dwukolumnowych, oddzielonych spacjami, uzupełnionych zerami bajtów wejściowych w formacie szesnastkowym, na wiersz.

-c, --one-byte-char
    Jednobajtowe wyświetlanie znakowe. Wyświetla szesnastkowo przesunięcie wejściowe, a za nim szesnaście, trójkolumnowych, oddzielonych spacjami znaków wejściowych, na wiersz.

-C, --canonical
    Tradycyjne wyświetlanie szesnastkowe+ASCII. Wyświetla szesnastkowo przesunięcie wejściowe, a za nim szesnaście dwukolumnowych, oddzielonych spacjami, bajtów w formacie ósemkowym; po których występuje tych samych szesnaście bajtów w formacie %_p ujętym znakami |. Wywołanie programu jako hd wymusza tę opcję.

-d, --two-bytes-decimal
    Dwubajtowe wyświetlanie dziesiętne. Wyświetla szesnastkowo przesunięcie wejściowe, a za nim osiem pięciokolumnowych, oddzielonych spacjami, uzupełnionych zerami jednostek dwubajtowych, zawierających dane wejściowe, w formacie dziesiętnym, na wiersz.

-e, --format łańcuch-formatu
    Określa łańcuch formatu, który ma posłużyć do wyświetlania danych.

-f, --format-file plik
    Podaje plik, który zawiera jeden, lub więcej, oddzielonych nowym wierszem łańcuchów formatujących. Puste wiersze oraz wiersze zaczynające się od kratki (#) są ignorowane.

-L, --color[=kiedy]
    Koloryzuje wynik. Opcjonalnym argumentem kiedy może być auto, never (nigdy) lub always (zawsze). Gdy nie poda się argumentu kiedy, domyślnym ustawieniem jest auto. Kolory mogą być wyłączone, aktualne wbudowane ustawienie domyślne pokaże opcja --help. Zob. również podrozdział Kolory oraz rozdział KOLORY poniżej.

-n, --length długość
    Interpretuje tylko długość bajtów wejścia.

-o, --two-bytes-octal
    Dwubajtowe wyświetlanie ósemkowe. Wyświetla szesnastkowo przesunięcie wejściowe, a za nim osiem sześciokolumnowych, oddzielonych spacjami, uzupełnionych zerami, dwubajtowych fragmentów danych wejściowych, w formacie ósemkowym, na wiersz.

-s, --skip przesunięcie
    Pomija przesunięcie bajtów, licząc od początku wejścia.

-v, --no-squeezing
    Opcja -v powoduje wyświetlenie przez hexdump zrzutu wszystkich danych wejściowych. Bez opcji -v, dowolna liczba grup wierszy wyjściowych, która będzie identyczna z bezpośrednio poprzedzającą grupą wierszy (poza przesunięciami wejściowymi), będzie zamieniana wierszem z pojedynczą gwiazdką.

-x, --two-bytes-hex
    Dwubajtowe wyświetlanie szesnastkowe. Wyświetla szesnastkowo przesunięcie wejściowe, a za nim osiem oddzielonych spacjami, czterokolumnowych, uzupełnionych zerami, dwubajtowych fragmentów danych wejściowych, w formacie szesnastkowym, na wiersz.

-h, --help
    Wyświetla ten tekst i wychodzi.

-V, --version
    Wyświetla wersję i wychodzi.

Dla każdego pliku wejściowego hexdump kopiuje sekwencyjnie dane wejściowe na standardowe wyjście, przekształcając dane według łańcuchów formatujących, podanych w opcjach -e i -f, w kolejności, w jakiej były podane.

FORMATY

Łańcuch 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 i za ukośnikiem są ignorowane.

Format jest częścią wymaganą i musi być ujęty w podwójne cudzysłowy (" "). Jest on interpretowany jak łańcuch formatujący fprintf (zob. fprintf(3)), lecz z następującymi wyjątkami:

    1. Gwiazdka (*) nie może być używana do określania precyzji lub szerokości pola.

    2. 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 łańcuch).

    3. Znaki konwersji h, l, n, p i q nie są obsługiwane.

    4. Obsługiwane są następujące sekwencje specjalne pojedynczych znaków, opisane w standardzie C:

            \0   NULL
            \a   alert character
            \b   backspace
            \f   form-feed
            \n   newline
            \r   carriage return
            \t   tab
            \v   vertical tab

  Łańcuchy konwersji

Polecenie hexdump obsługuje również następujące dodatkowe łańcuchy konwersji:

_a[dox]
    Wyświetla przesunięcie wejścia, kumulujące się na przestrzeni plików wejściowych, wskazujące następny wyświetlany bajt. Dodane znaki d, o, i x wskazują format wyświetlenia jako dziesiętny, ósemkowy lub szesnastkowy.

_A[dox]
    Identyczne z łańcuchem konwersji _a z tą tylko różnicą, że jest dokonywane tylko raz, po przetworzeniu wszystkich danych wejściowych.

_c
    Wypisuje znaki z domyślnego zestawu znaków. Znaki niedrukowalne są wyświetlane w trójznakowych, uzupełnionych zerami sekwencjach ósemkowych, poza tymi, które są reprezentowane standardową notacją specjalną (zob. wyżej) - te są wyświetlane jako łańcuchy dwuznakowe.

_p
    Wypisuje znaki z domyślnego zestawu znaków. Niedrukowane znaki są wyświetlane jako pojedyncza kropka ".".

_u
    Wyświetla znaki US ASCII, z wyjątkiem znaków sterujących, które są wyświetlane za pomocą następujących nazw, pisanych małymi literami. Znaki większe niż szesnastkowe 0xff, są wyświetlane jako łańcuchy szesnastkowe.

            00 nul     08 bs      10 dle     18 can     7F del
            01 soh     09 ht      11 dc1     19 em
            02 stx     0A lf      12 dc2     1A sub
            03 etx     0B vt      13 dc3     1B esc
            04 eot     0C ff      14 dc4     1C fs
            05 enq     0D cr      15 nak     1D gs
            06 ack     0E so      16 syn     1E rs
            07 bel     0F si      17 etb     1F us

  Kolory

Gdy umieści się je na końcu łańcucha formatu, hexdump podświetla odpowiedni łańcuch zadanym kolorem. Warunki, jeśli są obecne, są sprawdzane przed podświetlaniem.

_L[jednostka_koloru_1,jednostka_koloru_2,...,jednostka_koloru_n]

Pełna definicja jednostki koloru jest następująca:

[!]KOLOR[:WARTOŚĆ][@PRZESUNIĘCIA_POCZĄTEK[-KONIEC]]

!
    Zaprzecza warunkowi. Proszę zauważyć, zaprzeczenie jednostce ma sens tylko wówczas, gdy poda się zarówno wartość/łańcuch oraz przesunięcie. W takim przypadku, dany łańcuch wyjściowy zostanie podświetlony wtedy i tylko wtedy, gdy wartość/łańcuch nie odpowiada tej/temu na przesunięciu.

KOLOR
    Jeden z 8 podstawowych kolorów powłoki.

WARTOŚĆ
    Wartość, która ma być dopasowana, podana szesnastkowo lub ósemkowo, albo jako łańcuch. Proszę zauważyć, że zwykłe sekwencje specjalne C nie są interpretowane przez hexdump w jednostkach_koloru.

PRZESUNIĘCIE
    Przesunięcie lub zakres przesunięcie, wobec którego zostanie sprawdzone dopasowanie. Proszę zauważyć, że sam PRZESUNIĘCIA_POCZĄTEK używa tej samej wartości, co KONIEC przesunięcia.

  Liczniki

Domyślne i obsługiwane liczniki bajtów dla znaków konwersji są następujące:

%_c, %_p, %_u, %c
    Tylko liczniki jednobajtowe.

%d, %i, %o, %u, %X, %x
    Domyślnie cztery bajty; obsługiwane są liczniki jedno-, dwu- i czterobajtowe.

%E, %e, %f, %G, %g
    Domyślnie osiem bajtów, obsługiwane są też liczniki czterobajtowe.

Ilość danych, interpretowanych przez każdy łańcuch formatujący jest sumą danych wymaganych przez każdą jednostką formatującą, która jest obliczana jako iteracja razy licznik bajtów; albo iteracja razy licznik bajtów wymaganych przez format, jeśli nie podano licznika bajtów.

Wejście jest obsługiwane w blokach, gdzie blok jest zdefiniowany jako największa porcja danych, podanych przez dowolny z łańcuchów formatujących. Łańcuchy 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ślonego licznika iteracji, mają zwiększany licznik iteracji, aż cały blok nie zostanie przetworzony, lub aż zabraknie danych do zadowolenia łańcucha formatującego.

Jeśli w wyniku określenia przez 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/łańcuchami konwersji, chyba że wszystkie, poza jednym znakiem/łańcuchem konwersji, to _a lub _A.

Jeśli w wyniku podania opcji -n lub osiągnięcia końca pliku, dane wejściowe zadowolą łańcuch formatujący tylko częściowo, blok wejściowy jest wypełniony zerami, wystarczająco aby wyświetlić wszystkie dostępne dane (tj. wszystkie jednostki formatujące, zachodzące za koniec danych będą wyświetlały jakąś liczbę bajtów zerowych).

Dalsze wyjście takich łańcuchów formatujących jest zamieniane odpowiadającą liczbą spacji. Odpowiadająca liczba 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 łańcuch NULL.

Jeśli nie poda się łańcucha formatującego, domyślne wyświetlanie jest bardzo zbliżone do formatu wyjściowego -x (opcja -x powoduje, że pomiędzy jednostkami formatu jest więcej miejsca, niż w domyślnym wyjściu).

Note that the default format and the -x, -d, and -o options use multi-byte format units that are displayed in the system’s native byte order (endianness). This means the same input may produce different output on little-endian (e.g., x86, ARM64) and big-endian (e.g., s390x) systems. For byte-order independent output, use single-byte formats such as -b, -c, -C, or -X.

STATUS ZAKOŃCZENIA

hexdump wychodzi z 0 przy powodzeniu i z > 0 jeśli wystąpił błąd.

ZGODNE Z

Polecenie hexdump powinno być zgodne z IEEE Std 1003.2 ("POSIX.2").

PRZYKŁADY

Wyświetla wejście w przestudiowanym formacie:

       "%06.6_ao "  12/1 "%3_u "
       "\t" "%_p "
       "\n"

Implementuje opcję -x:

       "%07.7_Ax\n"
       "%07.7_ax  " 8/2 "%04x " "\n"

Przykład sygnatury rozruchu MBR: Podświetla adresy na błękitno, a bajty w przesunięciach 510 i 511 na zielono, jeśli ich wartość to 0xAA55 lub na czerwono w innym przypadku.

       "%07.7_Ax_L[cyan]\n"
       "%07.7_ax_L[cyan]  " 8/2 "   %04x_L[green:0xAA55@510-511,!red:0xAA55@510-511] " "\n"

KOLORY

Kolorowanie wyjściowe zaimplementowano poprzez terminal-colors.d(5). Jawne kolorowanie można wyłączyć za pomocą pustego pliku

    /etc/terminal-colors.d/hexdump.disable

dla polecenia hexdump albo dla wszystkich narzędzi plikiem

    /etc/terminal-colors.d/disable

Od wersji 2.41, obsługiwana jest również zmienna środowiskowa $NO_COLOR, służąca do wyłączenia kolorowania wyjścia, o ile nie włączy się je wprost opcją wiersza poleceń.

Globalne ustawienie przesłonią $XDG_CONFIG_HOME/terminal-colors.d lub $HOME/.config/terminal-colors.d danego użytkownika.

Proszę zauważyć, że kolorowanie wyjścia może być domyślnie włączone i wówczas katalogi terminal-colors.d mogą jeszcze nie istnieć.

ZGŁASZANIE BŁĘDÓW

Problemy należy zgłaszać w

DOSTĘPNOŚĆ

Polecenie hexdump jest częścią pakietu util-linux, który można pobrać ze strony