EN JA
HEXDUMP(1)
HEXDUMP(1) FreeBSD General Commands Manual HEXDUMP(1)

名称

hexdump, hdASCII, 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 進表示 。入力のオフセットを 16 進数で表示し、次に、入力の1バイトずつを、0 詰めした 3 桁の 8 進数で、1 行あたり 16 個、空白で区切って表示します。
-c
1 バイト文字表示 。入力のオフセットを 16 進数で表示し、次に、入力の1バイトずつを、空白詰めした 3 桁の ASCII 文字で、1 行あたり 16 個、空白で区切って表示します。
-C
標準的な hex+ASCII 表示 。入力オフセットを 16 進数で表示し、引続いて 16 バイトを 16 進数 2 桁で空白で区切って表示し、引き続いて同じ 16 バイトを %_p フォーマットで ``|'' 文字で括って表示します。

コマンド hd を実行すると、このオプションの意味が含まれます。

-d
2 バイト 10 進表示 。入力のオフセットを 16 進数で表示し、次に、入力の 2 バイトずつを、0 詰めした 5 桁の 10 進数で、1 行あたり 8 個、空白で区切って表示します。
-e format_string
データの表示形式を決めるフォーマット文字列を指定します。
-f format_file
1 つあるいはそれ以上のフォーマット文字列 (改行で区切る) の書かれたファイルを指定します。空行、および、空白を除いた最初の文字がハッシュ記号 ( #) である行は無視されます。
-n length
入力のうち length バイト分だけを処理します。
-o
2 バイト 8 進表示 。入力のオフセットを 16 進数で表示し、次に、入力の 2 バイトずつを、0 詰めした 6 桁の 8 進数で、1 行あたり 8 個、空白で区切って表示します。
-s offset
入力の先頭から offset バイトを読み飛ばします。デフォルトでは offset は 10 進数として解釈されます。 0x または 0X, を頭に付けると offset は 16 進数として解釈されます。また、 0 を頭に付けると offset は 8 進数として解釈されます。 b, k, moffset の後ろにつけると、それぞれ 512, 1024, 1048576 倍と解釈されます。
-v
hexdump に対してすべての入力を表示させます。 -v オプションを指定しない場合、直前の行と内容 (オフセットは除く) が全く同じ行は何行であっても、アスタリスク 1 個の 1 行で置き換えられます。
-x
2 バイト 16 進表示 。入力のオフセットを 16 進数で表示し、次に、入力の 2 バイトずつを、0 詰めした 4 桁の 16 進数で、1 行あたり 8 個、空白で区切って表示します。

hexdump は、各々の入力ファイルの内容を、それらが指定された順に、 -e および -f オプションによって指示されたフォーマット文字列に従って変換しながら、シーケンシャルに標準出力へコピーします。

フォーマット

フォーマット文字列は、任意の数のフォーマット単位を空白で区切って並べたものです。フォーマット単位は最大 3 個までの要素すなわち繰り返し回数・バイト数・フォーマットによって構成されます。

繰り返し回数は正の整数で、省略時の値は 1 です。それぞれのフォーマットはこの繰り返し回数だけ適用されます。

バイト数も正の整数で、省略することもできます。指定された場合には繰り返し 1 回あたりに処理されるバイト数を示します。

繰り返し回数とバイト数はスラッシュ (/) で区切ります。どちらか一方だけ指定する時も、繰り返し回数の場合は直後、バイト数の場合は直前にスラッシュを付け、曖昧にならないようにします。スラッシュの前後にある空白は無視されます。

フォーマットは必須であり、ダブルクォート (" ") で囲みます。フォーマットは fprintf 形式のフォーマット文字列 ( fprintf(3) を参照) ですが、以下の例外があります。

  • フィールドの幅あるいは精度としてアスタリスク (*) を使用することはできません。
  • ``s'' 変換文字にはバイト数またはフィールド精度を指定しなければなりません (精度が指定されなかった場合は文字列全体を表示するという fprintf(3) のデフォルトとは異なります)。
  • 変換文字 ``h'', ``l'', ``n'', ``p'' , ``q'' はサポートされていません。
  • C の標準規格の中で記述されている以下の 1 文字エスケープシーケンスをサポートしています。
    NUL \0
    <alert character> \a
    <backspace> \b
    <form-feed> \f
    <newline> \n
    <carriage return> \r
    <tab> \t
    <vertical tab> \v

hexdump ユーティリティはさらに以下の変換文字をサポートします。

_a[ dox]
次に表示されるバイトのオフセット (複数の入力ファイルを通算しての値) を表示します。文字 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 07F 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 オプションが指定された場合のものと同じになります。

終了ステータス

The hexdump and hd utilities exit 0 on success, and >0 if an error occurs.

使用例

入力を 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), od(1)
February 18, 2010 FreeBSD