.\" Copyright (c) 1989, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)hexdump.1 8.2 (Berkeley) 4/18/94 .\" %Id: hexdump.1,v 1.7 1997/02/22 19:55:06 peter Exp % .\" jpman %Id: hexdump.1,v 1.2 1997/03/29 04:26:20 horikawa Stab % .\" .Dd April 18, 1994 .Dt HEXDUMP 1 .Os .Sh 名称 .Nm hexdump, hd .Nd ASCII, 10進, 16進, 8進でのダンプ .Sh 書式 .Nm hexdump .Op Fl bcCdovx .Op Fl e Ar format_string .Op Fl f Ar format_file .Op Fl n Ar length .Bk -words .Op Fl s Ar skip .Ek .Ar file ... .Nm hd .Op Fl bcdovx .Op Fl e Ar format_string .Op Fl f Ar format_file .Op Fl n Ar length .Bk -words .Op Fl s Ar skip .Ek .Ar file ... .Sh 解説 .Nm hexdump ユーティリティは、ファイルが指定されていればそのファイル、 指定されていなければ標準入力を読み込み、ユーザの指定した フォーマットに従って表示するフィルタです。 .Pp オプションは以下の通りです: .Bl -tag -width Fl .It Fl b .Em 1バイト 8進表示。 入力のオフセットを16進数で表示し、次に、 入力の1バイトずつを、0詰めした3桁の8進数で、1行あたり16個、 空白で区切って表示します。 .It Fl c .Em 1バイト キャラクタ表示。 入力のオフセットを16進数で表示し、次に、 入力の1バイトずつを、空白詰めした3桁のASCII文字で、1行あたり16個、 空白で区切って表示します。 .It Fl C .Em 標準的な hex+ASCII 表示。 入力オフセットを 16 進数で表示し、 引続いて 16 バイトを 16 進数 2 桁で空白で区切って表示し、 引き続いて同じ 16 バイトを %_p フォーマットで ``|'' 文字で括って表示します。 .Pp コマンド .Nm hd を実行すると、このオプションで .Nm hexdump 実行したことを意味します。 .It Fl d .Em 2バイト 10進表示。 入力のオフセットを16進数で表示し、次に、 入力の2バイトずつを、0詰めした5桁の10進数で、1行あたり8個、 空白で区切って表示します。 .It Fl e Ar format_string データの表示形式を決めるフォーマット文字列を指定します。 .It Fl f Ar format_file 一つあるいはそれ以上のフォーマット文字列(改行で区切る) の書かれたファイルを指定します。空行、および、 空白を除いた最初の文字が ハッシュ記号 .Pf ( Cm \&# ) である行は無視されます。 .It Fl n Ar length 入力のうち .Ar length バイト分だけを処理します。 .It Fl o .Em 2バイト 8進表示。 入力のオフセットを16進数で表示し、次に、 入力の2バイトずつを、0詰めした6桁の8進数で、1行あたり8個、 空白で区切って表示します。 .It Fl s Ar offset 入力の先頭から .Ar offset バイトを読み飛ばします。 デフォルトでは .Ar offset は10進数として解釈されます。 .Cm 0x または .Cm 0X , を頭に付けると .Ar offset は16進数として解釈されます。また、 .Cm 0 を頭に付けると .Ar offset は8進数として解釈されます。 .Cm b , .Cm k , .Cm m を .Ar offset の後ろにつけると、それぞれ .Li 512 , .Li 1024 , .Li 1048576 倍と解釈されます。 .It Fl v .Fl v オプションは hexdump に対してすべての入力を表示させます。 .Fl v オプションを指定しない場合、直前の行と 内容(オフセットは除く)が全く同じ行は何行であっても、 アスタリスク1個の1行で置き換えられます。 .It Fl x .Em 2バイト 16進表示。 入力のオフセットを16進数で表示し、次に、 入力の2バイトづつを、0詰めした4桁の16進数で、1行あたり8個、 空白で区切って表示します。 .El .Pp .Nm hexdump は、各々の入力ファイルの内容を、それらが指定された順に、 .Fl e および .Fl f オプションによって指示されたフォーマット文字列に従って変換しながら、 シーケンシャルに標準出力へコピーします。 .Ss フォーマット フォーマット文字列は、任意の数のフォーマット単位を空白で区切って 並べたものです。フォーマット単位は最大3個までの要素すなわち 繰り返し回数・バイト数・フォーマットによって構成されます。 .Pp 繰り返し回数は正の整数で、省略時の値は1です。それぞれのフォーマットは この繰り返し回数だけ適用されます。 .Pp バイト数も正の整数で、省略することもできます。指定された場合には 繰り返し一回あたりに処理されるバイト数を示します。 .Pp 繰り返し回数とバイト数はスラッシュ(/)で区切ります。どちらか一方だけ 指定する時も、繰り返し回数の場合は直後、バイト数の場合は直前にスラッシュを 付け、曖昧にならないようにします。スラッシュの前後にある空白は無視されます。 .Pp フォーマットは必須であり、ダブルクォート(" ")で囲みます。フォーマットは fprintf形式のフォーマット文字列( .Xr fprintf 3 を参照) ですが、以下の例外があります。 .Bl -bullet -offset indent .It フィールドの幅あるいは精度としてアスタリスク(*)を使用することはできません。 .It ``s'' 変換文字にはバイト数または精度を指定しなければなりません。 (精度が指定されなかった場合は文字列全体を表示するという .Xr fprintf 3 のデフォルトとは異なります)) .It 変換文字 ``h'', ``l'', ``n'', ``p'' , ``q'' は サポートされていません。 .It Cの標準規格の中で記述されている 以下の一文字エスケープシーケンスをサポートしています。 .Bd -ragged -offset indent -compact .Bl -column .It NUL \e0 .It \ea .It \eb .It \ef .It \en .It \er .It \et .It \ev .El .Ed .El .Pp hexdump はさらに以下の変換文字をサポートします。 .Bl -tag -width Fl .It Cm \&_a Ns Op Cm dox 次に表示されるバイトのオフセット(複数の入力ファイルを通算しての 値)を表示します。文字 .Cm d , .Cm o , .Cm x を付加すると、表示をそれぞれ10進、8進、16進形式にします。 .It Cm \&_A Ns Op Cm dox .Cm \&_a 変換文字とほぼ同じですが、すべての入力が処理された後で一度だけ実行 されるという点が異なります。 .It Cm \&_c デフォルトの文字セット中における文字を表示します。 表示不能な文字は0詰めして3桁にした8進数で表示します。ただし標準のエスケープ 表記(上述)ができるものについてはその2文字で表示します。 .It Cm _p デフォルトの文字セット中における文字を表示します。 表示不能な文字は .Dq Cm \&. として表示します。 .It Cm _u 文字セット US ASCII 中での文字を表示します。ただし制御文字については 以下に示す小文字名で表示します。16進で0xffより大きな文字に ついては16進表記の文字列として表示します。 .Bl -column \&000_nu \&001_so \&002_st \&003_et \&004_eo .It \&000\ nul\t001\ soh\t002\ stx\t003\ etx\t004\ eot\t005\ enq .It \&006\ ack\t007\ bel\t008\ bs\t009\ ht\t00A\ lf\t00B\ vt .It \&00C\ ff\t00D\ cr\t00E\ so\t00F\ si\t010\ dle\t011\ dc1 .It \&012\ dc2\t013\ dc3\t014\ dc4\t015\ nak\t016\ syn\t017\ etb .It \&018\ can\t019\ em\t01A\ sub\t01B\ esc\t01C\ fs\t01D\ gs .It \&01E\ rs\t01F\ us\t0FF\ del .El .El .Pp 各々の変換文字について、サポートされているバイト数とデフォルトの バイト数は以下の通りです: .Bl -tag -width "Xc,_Xc,_Xc,_Xc,_Xc,_Xc" -offset indent .It Li \&%_c , \&%_p , \&%_u , \&%c 1バイトのみ使用できます。 .It Xo .Li \&%d , \&%i , \&%o , .Li \&%u , \&%X , \&%x .Xc デフォルトでは4バイトで、1バイト・2バイト・4バイトが使用できます。 .It Xo .Li \&%E , \&%e , \&%f , .Li \&%G , \&%g .Xc デフォルトでは8バイトで、4バイトも使用できます。 .El .Pp 各フォーマット文字列によって処理されるデータの量は、 各フォーマット単位が必要とするデータ量の合計であり、これは バイト数の繰り返し回数倍、あるいはバイト数が指定されていない場合には フォーマットの必要とするバイト数の繰り返し回数倍になります。 .Pp 入力は``ブロック''ごとに処理されます。ブロックとは、フォーマット 文字列によって指定されるデータの塊のうちで最も大きいものです。 1ブロック分のデータを処理し切らないフォーマット文字列で、その中の 最後のフォーマット単位が何バイトかを処理し、かつ繰り返し 回数が指定されていないものは、ブロック全体が処理され切るか、 フォーマット文字列に合致するデータがブロック中になくなるまで 繰り返し回数を増やされます。 .Pp ユーザの指定またはhexdumpが上記のように繰り返し回数を変更した結果、 繰り返し回数が1より大きくなった場合、最後の繰り返しにおける 末尾の空白は出力されません。 .Pp バイト数を複数の変換文字と共に指定すると、一つを除いた全ての変換文字が .Cm \&_a または .Cm \&_A である時以外、エラーになります。 .Pp 入力がフォーマット文字列の一部分しか満たしていない状態で .Fl n オプションで指定したバイト数あるいはEOFに到達した場合、 有効なデータをすべて表示できるよう、入力ブロックには適当な数の0が 補われます。(すなわち、データの終端にまたがっている フォーマット単位は何バイトかの0を表示します。) .Pp そのようなフォーマット文字列によるさらなる出力は、等数の空白で 置き換えられます。等数の空白とは、 もとの変換文字あるいは変換文字列とフィールド幅と精度は同じで .Dq Li \&+ , .Dq \&\ \& , .Dq Li \&# を取り除いた .Cm s 変換文字が、NULL文字列を指した場合に出力される数の空白です。 .Pp フォーマット文字列が指定されない場合、デフォルトの表示形式は .Fl x オプションが指定された場合のものと同じになります。 .Pp .Nm hexdump は成功すれば0を、エラーが発生すれば >0 を返します。 .Sh 実行例 入力を perusal 形式で表示する: .Bd -literal -offset indent "%06.6_ao " 12/1 "%3_u " "\et\et" "%_p " "\en" .Ed .Pp \-x オプションを実装: .Bd -literal -offset indent "%07.7_Ax\en" "%07.7_ax " 8/2 "%04x " "\en" .Ed .Sh 関連項目 .Xr gdb 1