od と同様に、xxd はファイルの 16 進数またはバイナリ ダンプをいくつかの異なる形式で生成します。逆に、16 進ダンプ形式から元のデータに変換することもできます。たとえば、バイナリ ファイル /usr/bin/who の 16 進ダンプは次のとおりです。
$ xxd /usr/bin/who 0000000: 7f45 4c46 0101 0100 0000 ... 0000 .ELF............ 0000010: 0200 0300 0100 0000 a08c ... 0000 ............4... 0000020: 6824 0000 0000 0000 3400 ... 2800 h$......4. ...(. 0000030: 1900 1800 0600 0000 3400 ... 0408 ........4...4... ...
左の列は行のファイル オフセットを示し、次の 8 列にはデータが含まれ、最後の列には行内の印刷可能な文字が表示されます (存在する場合)。デフォルトでは、xxd は 3 つの列を出力します:ファイル オフセット、16 進数のデータ、およびテキストとしてのデータ (印刷可能な文字のみ)。
構文:
# xxd [parameter]
共通パラメータ
一般的に使用されるパラメータの一部:
コマンドオプション | 説明 |
---|---|
-l N | 最初の N バイトだけを表示します。 (デフォルトではファイル全体が表示されます) |
-s N | ファイルの最初の N バイトをスキップします。 |
-s -N | ファイルの終わりから N バイトを開始します。 (標準入力をスキップするより高度な +N 構文もあります。マンページを参照してください。) |
-c N | 1 行あたり N バイトを表示します。 (デフォルト =16) |
-g N | od -s のように、バイトの各行を空白で区切られた N バイトのシーケンスにグループ化します。 (デフォルト =2) |
-b | 出力を 16 進数ではなく 2 進数で表示します。 |
-u | 出力を小文字ではなく大文字の 16 進数で表示します。 |
-p | 出力を単純な 16 進ダンプとして表示します。1 行あたり 60 連続したバイトです。 |
-r | 逆の操作:xxd 16 進ダンプから元のファイル形式に変換します。デフォルトの hexdump フォーマットで動作し、-p オプションを追加すると、プレーンな hexdump フォーマットで動作します。 |
-i | 出力を C プログラミング言語のデータ構造として表示します。ファイルから読み取ると、データを含む unsigned char の配列と、配列の長さを含む unsigned int が生成されます。標準入力から読み取る場合、16 進バイトのコンマ区切りリストのみが生成されます。 |
xxd コマンドの例
1. -a パラメータを使用して、入力ファイルの 0x200 から始まる空白を自動的にスキップします:
# xxd -a -s +0x200 geek.txt
2. -a、-c パラメータを使用し、空白を自動的にスキップし、0x200 から始まる 1 行あたり 12 バイトを表示します。入力ファイル:
# xxd -a -c 12 -s +0x200 geek.txt
3. -a、-c、および -g パラメーターを使用して、ブランクを自動的にスキップします。各行は 12 バイト、1 行あたり 1 バイト、および 512 バイトのコンテンツを表示します。 0x200 から始まる、入力ファイル:
# xxd -a -c 12 -g 1 -l 512 -s +0x200 geek.txt