xxd − 16 進ダンプを作成したり、元に戻したり。 |
xxd −h[elp] |
ファ イルや標準入力から 16 進ダンプを作成します。 16 進ダンプから元のバ イナリに戻すこともできます。 uuencode(1) や uudecode(1) のように、バ イ ナリデータを、メールに貼り付け可能な ASCII 形式に変換できたり、標準出力 に出力することもできます。さらに、バイナリファイルにパッチを当てると い う使い方もできます。 |
infile を指定しなかった場合は、標準入力が読み込まれます。 infile に `−’ を指定した場合も、標準入力から読み込まれます。 outfile を指定しなかった (または `−’ を指定した) 場合は、標準出力に出力されます。 引 数の解釈処理は適当なので注意してください。パラメータを取らない引数は 最初の一文字だけチェックされます。引数の文字とパラメータの間のスペー ス は 省 略可能です。パラメータは 10 進数、16 進数、8 進数で指定できます。 −c8 、 −c 8 、 −c 010 、 −cols 8 はすべて同じ意味です。 |
−a | −autoskip |
オートスキップ: 連続した nul 行を一つの ’*’ で置き換える。 |
−b | −bits |
ビット (2進数) ダンプ。 1 オクテットが "1" と "0" の 8 文字で出 力 されます。各行の行頭には 16 進数の行番号が表示されます。行末 には ascii (または ebcdic) で表した場合の文字が表示されます。こ のモードでは −r、−p、−i は機能しません。 |
−c cols | −cols cols |
一 行 <cols> オクテットで出力する。標準設定は 16 (−i: 12, −ps: 30, −b: 6)。最大 256。 |
−E | −EBCDIC |
右端に出力される文字のエンコーディングを ASCII から EBCDIC に変 更 する。 16 進ダンプの出力形式は変更されません。 −r、−p、−i が 同時に指定された場合は何の効果もありません。 |
−g bytes | −groupsize bytes |
出力を <bytes> バイト (2 文字の 16 進数、または 8 文字の 2 進 数) ごとにスペースで区切ります。区切らずに出力するには −g 0 を 指定してください。 <Bytes> の標準設定は 2 です。2 進ダンプの 場 合は 1 です。ポストスクリプト形式やインクルード形式で出力すると きは、このオプションは使われません。 |
−h | −help |
コマンドの説明を出力して終了する。変換は実行されません。 |
−i | −include |
C インクルードファイル形式で出力します。入力ファイルの名前が 付 け られた静的配列の定義が出力されます。標準入力の場合は定義の中 身だけ出力されます。 |
−l len | −len len |
<len> オクテットだけ出力する。 |
−p | −ps | −postscript | −plain |
ポストスクリプト形式の 16 進ダンプを出力する。別名 プレーン 16 進ダンプ。 |
−r | −revert |
元に戻す: 16 進ダンプからバイナリ形式に変換 (またはパッチ) しま す。ファイルへ出力する場合、出力先のファイルは切り詰めされま せ ん。 行番号や特定の書式がないプレーン 16 進ダンプを読み込む場合 は、 −r −p を指定してください。空白と改行は無視されます。 |
−seek offset |
−r の後で使われた場合: 16 進ダンプを出力するファイルの 位 置 に <offset> を加える。 |
−s [+][−]seek |
infile の <seek> バイト目 (絶対位置、または相対位置) から開始す る。 + は、現在の標準入力の位置から相対的な位置を示します (標準 入力から読み込むときのみ意味があります)。− は、入力の終わりから の文字数を示します (+ と同時に指定した場合は、現在の標準入力 の 位置から手前の位置を示します)。 −s 引数を指定しなかった場合は、 現在のファイル位置から開始されます。 |
−u |
16 進数の表記に大文字を使います。指定がない場合は小文字で出 力されます。 |
−v | −version |
バージョンを表示します。 |
xxd −r では行番号の評価に関しての暗黙のルールがいくつかあります。出力 ファイルがシーク可能なら、各行の行番号が順番通りに並んでなくても構い ま せ ん。位置が飛んでいても重なっていても大丈夫です。その場合、次の位置に 移動するために lseek(2) が使われます。出力ファイルがシーク不 可 な ら、 「隙間」だけが処理可能です。隙間は null バイトで埋められます。 xxd −r は不正な入力をエラーにしません。ゴミは静かに読み飛ばされます。 16 進ダンプを編集するときは注意が必要です。 xxd −r は必要な桁 (−c 引数 参照) だけ 16 進データを読み込んで、行の残りを無視します。つまり、ascii ( ま たは ebcdic) を示している列への変更は無視されます。 xxd −r −p でプ レーン形式 (ポストスクリプト形式) の 16 進ダンプを元に戻す場合は、列 の 数は影響しません。 2 桁の 16 進数と認識できるものはすべて変換されます。 % xxd −i file xxd −s +seek と xxd −s seek, の違いは、lseek(2) を使って入力を "巻き 戻 す" かどうかです。’+’ が意味を持つのは、入力が標準入力で、xxd が起動さ れたときに標準入力のファイル位置がファイルの先頭ではなかった場合で す。 以下の例が分かりやすいかもしれません (もっと混乱するかも!)... ‘cat’
が既に標準入力を終わりまで読んでいるので、読む前に標準入力を巻き
戻す必要がある。 ファイル位置 0x480 (=1024+128) 前方から 16 進ダンプする。
‘+’ は 「現在
地からの相対位置」を意味するので、dd が 1k
処理した後から、さらに ‘128’ 進めます。 ファイル位置 0x100 ( = 1024−768) から 16
進ダンプする。 このような使い方はあまりしませんし、‘+’ を使うこともほとんどないで しょ う。 −s を使うときはいつでも、strace(1) や truss(1) を使って、xxd の働 きをチェックすることをお勧めします。 |
ファイルの最初の三行 (16 進数で 0x30 バイト)
以降を出力する。 ファイルの最後から三行 (16 進数で 0x30 バイト)
を出力する。 120 バイトを、平文 16 進ダンプ形式で一行に 20
オクテットずつ出力する。 この man ページの先頭から 120 バイトを一行に 12
オクテットずつ 16 進 ダ ンプする。 xxd.1 の日付部分だけを出力する。 input_file を output_file
にコピーし、先頭に 0x00 を 100 バイト分付け加 える。 xxd.1 の日付を修正する。 中身がすべて 0x00 の 65537
バイトのファイルを作成する。ただし、最後のバ イトだけは
’A’ (hex 0x41)。 作成したファイルをオートスキップを使って 16
進ダンプする。 一文字の ’A’ からなる 1
バイトのファイルを作成する。 ’−r −s’
の後に指定した数値がファイル中の行番号に加算され、結果、余計な
バイトが飛ばされる。 vim(1) の中から xxd
をフィルタとして実行し、マークされた ‘a’ か ら
‘z’ までの領域を 16 進ダンプする。 vim(1) の中から xxd
をフィルタとして実行し、マークされた ‘a’ から
‘z’ までの領域をバイナリに戻す。 vim(1) の中から xxd をフィルタとして実行し、 16
進ダンプされた行を元 に
戻す。戻したい行にカーソルを移動して: シリアル行から一文字読み込む |
以下のエラー値が返ります: |
0 |
エラーなし。 |
||
−1 |
操作がサポートされていない ( xxd −r −i はまだ不可です)。 |
||
1 |
引数の解釈に関するエラー。 |
||
2 |
入力ファイルに関する問題。 |
||
3 |
出力ファイルに関する問題。 |
||
4,5 |
指定された位置へシークできなかった。 |
こ の奇妙なツールは作者が使いやすいように作られています。自己責任で使っ てください。ファイルをコピーし、それを調べ、ウィザードたれ。 |
このマニュアルは xxd バージョン 1.7 について説明しています。 |
(c) 1990-1997 by Juergen Weigert 私の功績として自由に配布してください。 マニュアルは Tony Nugent |