書式
[-bcCdovx ] -words [-e format_string ] -words [-f format_file ] -words [-n length ] -words [-s skip ] file ...説明
hexdump ユーティリティは、指定したファイルを ユーザーが指定したフォーマットで表示するフィルタである。 ファイルが指定されていない場合は、標準入力を読み込んでフォーマットする。オプションとしては以下のものがある:
- -b
- 1 バイト単位の 8 進数表示。 入力オフセットを 16 進数で表示し、 その後に、入力データ 1 バイトずつを 0 で字詰めした 3 桁の 8 進数で表現し、 それを 1 行当たり 16 個、空白で区切って表示する。
- -c
- 1 バイト単位のキャラクタ表示。 入力オフセットを 16 進数で表示し、 その後に、入力データのキャラクタを 空白で字詰めした 3 桁 (の ASCII 文字) で表現し、 それを 1 行当たり 16 個、空白で区切って表示する。
- -C
- 標準的な 16進数 + ASCII での表示。 入力オフセットを 16 進数で表示し、 その後に、入力データのキャラクタを 2 桁の 16 進数で表現し、 それを 1 行当たり 16 個、空白で区切って表示する。 その後に、``|'' で囲まれた中に同じ 16 バイトを %_p フォーマットで表示する。
- -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 進数として解釈される。 offset の後ろに b k m を付けた場合、それぞれ 512 1024 1048576 倍であると解釈されるようになる。
- -v
- -v オプションを指定すると、hexdump に対して全ての入力データを表示させる。 -v オプションを指定しない場合、 直前の出力行と同じ内容の行 (ただし、入力オフセットは除く) は、 何行であっても、 1 個のアスタリスクが書かれた行で置き換えられる。
- -x
- 2 バイト単位の 16 進数表示。 入力オフセットが 16 進数で表示し、 その後に、入力 2 バイト単位を 0 で字詰めした 4 桁の 16 進数で表現し、 それを 1 行当たり 8 個、空白で区切って表示する。
各入力ファイルに対して、 は、入力ファイルが指定された順番で、 -e や -f オプションで指定されたフォーマット文字列に基づいて変換しながら 続けて標準出力に書き出していく。
フォーマット
フォーマット文字列は、空白で区切られた任意の個数の フォーマット単位を含んでいる。 フォーマット単位は最大 3 個の要素、つまり、 繰り返し回数・バイト数・フォーマットを含んでいる。繰り返し回数は、オプションとして指定される正の整数である。 デフォルトは 1 である。 各フォーマットは繰り返し回数だけ適用される。
バイト数は、オプションとして指定される正の整数である。 これが指定された場合、 1 つのフォーマットで処理されるバイト数を示す。
繰り返し回数とバイト数 (の両方、もしくはどちらか一方) が指定された場合、 どちらの数字かを区別するために、 繰り返し回数の後とバイト数の前にスラッシュを 1 個置かなければならない。 スラッシュの前後の空白は無視される。
フォーマットは必須で、ダブルクォートマーク (" ") で囲まなければならない。 このフォーマットは、fprintf 形式のフォーマット文字列 ( fprintf(3) を参照) として解釈されるが、 以下のような例外がある:
- フィールドの幅や精度としてアスタリスク (*) を使えない。
- 個々の変換文字 ``s'' について、バイト数やフィールド精度が必須である (精度が指定されていない場合に全ての文字列を表示する fprintf(3) のデフォルトとは異なる)。
- 変換文字 ``h'', ``l'', ``n'', ``p'', ``q'' がサポートされていない。
-
C 言語の標準規格で記述されている
1 文字のエスケープシーケンスがサポートされている:
- NUL \0
- <アラート文字> \a
- <バックスペース> \b
- <フォームフィード>\f
- <改行>\n
- <復帰>\r
- <タブ>\t
- <垂直タブ>\v
hexdump は、他にも以下の変換文字列をサポートする:
- _a [dox ]
- 次に表示されるバイトのオフセット (複数の入力ファイルで通算した値) を表示する。 文字 d o x を後ろに付加すると、表示の際の基数がそれぞれ 10, 8, 16 進数に指定される。
- _A [dox ]
- 変換文字列 _a とほぼ同じ。 ただし、この変換は全ての入力データが処理された後で 1 回だけ実行される。
- _c
- デフォルト文字セットの文字で出力する。 表示不能な文字は、0 で字詰めした 3 桁の 8 進数で表示される。 ただし、標準エスケープ表記で表現される文字 (上記を参照) は、 その 2 文字の文字列で表示される。
- _p
- デフォルト文字セットの文字で出力する。 表示不能な文字は、1 個の ``. '' として表示される。
- _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 バイトがサポートされている。
各フォーマット文字列によって処理されるデータの量は、 各フォーマット単位で必要とされるデータの合計である。 この合計は (繰り返し回数)×(バイト数) である。 また、バイト数が指定されていない場合は、 (繰り返し回数)×(フォーマットが必要としているバイト数) である。
入力は「ブロック」ごとに操作される。 ブロックは、フォーマット文字列で指定される データの塊のうちで最大のもの、と定義される。 入力ブロックのデータより少ないバイト数しか処理していないフォーマット文字列で、 その中の最後のフォーマット単位で数バイトを処理し、 かつ繰り返し回数が指定されていない場合、 入力ブロック全体が処理されるか、 フォーマット文字列に合致するデータがブロックになくなるまで、 繰り返し回数を増加させる。
ユーザーの指定、 または hexdump が上で説明したように繰り返し回数を変更した結果、 繰り返し回数が 2 回以上になった場合、 最後の繰り返しにおける末尾の空白は出力されない。
バイト数を複数の変換文字と共に指定すると、 1 つを除いた全ての変換文字が _a または _A である場合以外は、エラーになる。
-n オプションで指定したバイト数分、またはファイル終端に達したときに、 入力データがフォーマット文字列の一部分にしか満たさない場合、 有効なデータを全て表示するために、入力ブロックには適切な数の 0 が補われる (すなわち、データの終端にまたがっているフォーマット単位は、 何個かの 0 のバイトを表示する)。
このようなフォーマット文字列によるさらなる出力は、 等数の空白で置き換えられる。 等数の空白とは、元々の変換文字とフィールド幅と精度は同じで、 変換フラグ文字 ``+ '' `` '' ``# '' を取り除いた s 変換文字が NULL 文字列を参照した場合に出力される数の空白である。
フォーマット文字列が指定されない場合、 デフォルトの表示は -x オプションを指定した場合と同じである。
は成功すると 0 を返して終了する。 エラーが起こった場合は、1 以上を返して終了する。
例
入力を perusal (詳しく閲覧する) フォーマットで表示する:"%06.6_ao " 12/1 "%3_u " "\t\t" "%_p " "\n"
-x オプションを実装する:
"%07.7_Ax\n" "%07.7_ax " 8/2 "%04x " "\n"
準拠
ユーティリティは St -p1003.2 に適合しているはずである。翻訳者謝辞
この man ページの翻訳にあたり、 FreeBSD jpman project <http://www.jp.freebsd.org/man-jp/> による翻訳を参考にさせていただいた。