HEXDUMP(1)

명칭
hexdump, hd - ASCII, 10진, 16진, 8진에서의 덤프

서식
hexdump [-bcCdovx] [-e format_string] [-f format_file] [-n length] [-s skip] file ... hd [-bcdovx] [-e format_string] [-f format_file] [-n length] [-s skip] file ...

해설
hexdump 유틸리티는, 파일이 지정되어 있으면 그 파일, 지정되어 있지 않으면 표준 입력을 읽어들여, 유저의 지정했다 포맷에 따라 표시하는 필터입니다.

옵션은 이하와 같습니다:

-b  1 바이트 8 진표시. 입력의 오프셋(offset)를 16 진수로 표시해, 다음에, 입력의 1바이트씩을, 0 채우고 한 3 자리수의 8 진수로, 1 행 당 16 개, 공백에서 단락지어 표시합니다.

-c  1 바이트 캐릭터 표시. 입력의 오프셋(offset)를 16 진수로 표시해, 다음에, 입력의 1바이트씩을, 공백 채우고 한 3 자리수의 ASCII 캐릭터로, 1 행 당 16 개, 공백에서 단락지어 표시합니다.

-C  표준적인 hex+ASCII 표시 입력 오프셋(offset)를 16 진수로 표시해, 계속해 16 바이트를 16 진수 2 자리수로 공백에서 단락지어 표시해, 계속해 같은 16 바이트를 %_p 포맷으로 ``|''캐릭터로 괄은 표시합니다.

    명령 hd (을)를 실행하면(자), 이 옵션으로 hexdump 실행한 것을 의미합니다.

-d  2 바이트 10 진표시 입력의 오프셋(offset)를 16 진수로 표시해, 다음에, 입력의 2 바이트씩을, 0 채우고 한 5 자리수의 10 진수로, 1 행 당 8 개, 공백에서 단락지어 표시합니다.

-e format_string
    데이터의 표시 형식을 결정하는 포맷 캐릭터 라인을 지정합니다.

-f format_file
    1 개(살) 혹은 그 이상의 포맷 캐릭터 라인 (개행으로 단락짓는다) (이)가 쓰여진 파일을 지정합니다. 공행, 및, 공백을 제외한 최초의 캐릭터가 해시 기호 (#) 인 행은 무시됩니다.

-n length
    입력 중 length 바이트분만큼을 처리합니다.

-o  2 바이트 8 진표시 입력의 오프셋(offset)를 16 진수로 표시해, 다음에, 입력의 2 바이트씩을, 0 채우고 한 6 자리수의 8 진수로, 1 행 당 8 개, 공백에서 단락지어 표시합니다.

-s offset
    입력의 선두로부터 offset 바이트를 읽어 날립니다. 디폴트에서는 offset (은)는 10 진수로서 해석됩니다. 0x 또는 0X, (을)를 머리에 붙이면(자) offset (은)는 16 진수로서 해석됩니다. 또, 0 (을)를 머리에 붙이면(자) offset (은)는 8 진수로서 해석됩니다. b, k, m (을)를 offset 의 뒤로 붙이면(자), 각각 512, 1024, 1048576 배로 해석됩니다.

-v  -v 옵션은 hexdump 에 대해서 모든 입력을 표시시킵니다. -v 옵션을 지정하지 않는 경우, 직전의 행과 내용 (오프셋(offset)는 제외하다)이 완전히 같은 행은 몇행이어도, asterisk 1 개의 1 행으로 옮겨놓을 수 있습니다.

-x  2 바이트 16 진표시 입력의 오프셋(offset)를 16 진수로 표시해, 다음에, 입력의 2 바이트씩을, 0 채우고 한 4 자리수의 16 진수로, 1 행 당 8 개, 공백에서 단락지어 표시합니다.

hexdump (은)는, 각각의 입력 파일의 내용을, 그것들이 지정된 순서에, -e 및 -f 옵션에 의해 지시받은 포맷 캐릭터 라인에 따라 변환하면서, 시퀀셜에 표준 출력에 카피합니다.

  포맷
포맷 캐릭터 라인은, 임의의 수의 포맷 단위를 공백에서 단락지어 늘어놓은 것입니다. 포맷 단위는 최대 3 개까지의 요소 즉 반복 회수·바이트수·포맷에 의해 구성됩니다.

반복 회수는 정의 정수로, 생략시의 값은 1 입니다. 각각의 포맷은 이 반복 회수만 적용됩니다.

바이트수도 정의 정수로, 생략 할 수도 있습니다. 지정되었을 경우에는 반복 1 회 쯤에 처리되는 바이트수를 나타냅니다.

반복 회수와 바이트수는 slash (/)로 단락짓습니다. 어느 쪽인지 한편만 지정할 때도, 반복 회수의 경우는 직후, 바이트수의 경우는 직전에 slash를 붙여 애매하게 안 되게 합니다. slash의 전후에 있는 공백은 무시됩니다.

포맷은 필수이며, 더블 쿼트 (" ")로 둘러쌉니다. 포맷은 fprintf 형식의 포맷 캐릭터 라인 ( fprintf(3) (을)를 참조)입니다만, 이하의 예외가 있습니다.

•   필드의 폭 혹은 정밀도로서 asterisk (*)를 사용할 수 없습니다.

•   ``s''변환 캐릭터에는 바이트수 또는 정밀도를 지정하지 않으면 안됩니다 (정밀도가 지정되지 않았던 경우는 캐릭터 라인 전체를 표시한다고 한다 fprintf(3) 의 디폴트와는 다릅니다).

•   변환 캐릭터 ``h'', ``l'', ``n'', ``p'' , ``q''는 서포트되고 있지 않습니다.

•   C 의 표준 표준 중(안)에서 기술되고 있다 이하의 1 캐릭터 escape sequence를 서포트하고 있습니다.
    NUL | \0
    <alert character> | \a
    <backspace> | \b
    <form-feed> | \f
    <newline> | \n
    <carriage return> | \r
    <tab> | \t
    <vertical tab> | \v

hexdump 유틸리티는 한층 더 이하의 변환 캐릭터를 서포트합니다.

_a[dox]
    다음에 표시되는 바이트의 오프셋(offset) (복수의 입력 파일을 통산 한 값) (을)를 표시합니다. 캐릭터 d, o, x (을)를 부가하면(자), 표시를 각각 10 진, 8 진, 16 진형식으로 합니다.

_A[dox]
    _a 변환 캐릭터와 거의 같습니다만, 모든 입력이 처리된 다음에 한 번만 실행 된다고 하는 점이 다릅니다.

_c  디폴트의 캐릭터 세트중에 있어서의 캐릭터를 표시합니다. 표시 불능인 캐릭터는 0 채우고 해 3 자리수로 한 8 진수로 표시합니다. 다만 표준의 이스케이프 표기 (상술)를 할 수 있는 것에 대해서는 그 2 캐릭터로 표시합니다.

_p  디폴트의 캐릭터 세트중에 있어서의 캐릭터를 표시합니다. 표시 불능인 캐릭터는 “”. (으)로서 표시합니다.

_u  캐릭터 세트 US ASCII 안에서의 캐릭터를 표시합니다. 다만 제어 캐릭터에 대해서는 이하에 나타내는 소문자명으로 표시합니다. 16 진으로 0xff 보다 큰 캐릭터에 붙어 16 진표기의 캐릭터 라인으로서 표시합니다.
    000 nul | 001 soh | 002 stx | 003 etx | 004 eot | 005 enq
    006 ack | 007 bel | 008 bs | 009 ht | 00A lf | 00B vt
    00C ff | 00D cr | 00E so | 00F si | 010 dle | 011 dc1
    012 dc2 | 013 dc3 | 014 dc4 | 015 nak | 016 syn | 017 etb
    018 can | 019 em | 01A sub | 01B esc | 01C fs | 01D gs
    01E rs | 01F us | 0FF del

각각의 변환 몬지에 도착해, 서포트되고 있는 바이트수와 디폴트의 바이트수는 이하와 같습니다:

%_c, %_p, %_u, %c
    1 바이트만 사용할 수 있습니다.

    %d, %i, %o, %u, %X, %x 디폴트에서는 4 바이트로, 1 바이트·2 바이트·4 바이트를 사용할 수 있습니다.

    %E, %e, %f, %G, %g 디폴트에서는 8 바이트로, 4 바이트와 12 바이트나 사용할 수 있습니다.

각 포맷 캐릭터 라인에 의해 처리되는 데이터의 양은, 각 포맷 단위가 필요로 하는 데이터량의 합계이며, 이것은 바이트수의 반복 회수배, 혹은 아르바이트수가 지정되어 있지 않은 경우에는 포맷이 필요로 하는 바이트수의 반복 회수 배가 됩니다.

입력은 ``블록''마다 처리됩니다. 블록이란, 포맷 캐릭터 라인에 의해 지정되는 데이터의 덩어리중에서 가장 큰 것입니다. 1 블록 분의 데이터를 처리 다하지 않는 포맷 캐릭터 라인으로, 그 중의 마지막 포맷 단위가 몇 바이트인지를 처리해, 한편 반복해 회수가 지정되어 있지 않은 것은, 블록 전체가 처리되고 자르는지, 포맷 캐릭터 라인에 합치하는 데이터가 블록중에 없게 될 때까지 반복 회수를 늘려집니다.

유저의 지정 또는 hexdump 가 상기와 같이 반복해 회수를 변경한 결과, 반복 회수가 1 보다 커졌을 경우, 마지막 반복해에 있어서의 말미의 공백은 출력되지 않습니다.

바이트수를 복수의 변환 캐릭터와 함께 지정하면(자), 1 개(살)을 제외한 모든 변환 캐릭터가 _a 또는 _A 일 때 이외, 에러가 됩니다.

입력이 포맷 캐릭터 라인의 일부분 밖에 채우지 않은 상태로 -n 옵션으로 지정한 바이트 수많은 있고는 EOF에 도달했을 경우, 유효한 데이터를 모두 표시할 수 있도록, 입력 블록에는 적당한 수의 0 이 보충해집니다. (즉, 데이터의 종단에 걸치고 있다 포맷 단위는 몇 바이트인가의 0 을 표시합니다. )

그러한 포맷 캐릭터 라인에 의하고 말이야들 되는 출력은, 등수의 공백에서 옮겨놓을 수 있습니다. 등수의 공백이란, 원래의 변환 캐릭터 혹은 변환 캐릭터 라인과 필드폭과 정밀도는 같아 “+”, “ ”, “#” (을)를 없앴다 s 변환 캐릭터가, NULL 캐릭터 라인을 가리켰을 경우에 출력되는 수의 공백입니다.

포맷 캐릭터 라인이 지정되지 않는 경우, 디폴트의 표시 형식은 -x 옵션이 지정되었을 경우의 것과 같게 됩니다.

진단

사용예
입력을 perusal 형식에서 표시한다:

    "%06. 6_ao "  12/1 "%3_u "
    "\t\t" "%_p "
    "\n"

-x 옵션을 실장:

    "%07. 7_Ax\n"
    "%07. 7_ax  " 8/2 "%04x " "\n"

관련 항목
gdb(1)