od コマンド

ファイルの内容を様々な形式で表示します。主に8進数、10進数、16進数形式で表示します。

概要

od(octal dump)コマンドは、ファイルの内容を異なる形式で表示します。元々は8進数形式でデータを表示するために設計されましたが、現代のバージョンでは16進数、10進数、ASCII、その他多くの出力形式をサポートしています。特にバイナリファイルの調査、非表示文字の表示、またはファイルの内容をバイト単位で分析する際に便利です。

オプション

-t, --format=TYPE

出力形式を指定します。一般的なTYPE値には以下があります:

$ echo "Hello" | od -t c
0000000   H   e   l   l   o  \n
0000006

-A, --address-radix=RADIX

ファイルオフセットの形式を指定します。RADIXには以下があります:

$ echo "Hello" | od -A x
000000   48 65 6c 6c 6f 0a
000006

-j, --skip-bytes=BYTES

フォーマットして書き込む前にBYTES分の入力バイトをスキップします。

$ echo "Hello World" | od -c -j 6
0000006  W   o   r   l   d  \n
0000014

-N, --read-bytes=BYTES

最大BYTES分の入力バイトをフォーマットして書き込みます。

$ echo "Hello World" | od -c -N 5
0000000   H   e   l   l   o
0000005

-w, --width=BYTES

1行あたりBYTES分のバイトを出力します。デフォルトは16です。

$ echo "Hello World" | od -c -w4
0000000   H   e   l   l
0000004   o       W   o
0000010   r   l   d  \n
0000014

-v, --output-duplicates

行の省略を示すを使用しません(デフォルトでは、は複数の同一行が折りたたまれていることを示します)。

$ dd if=/dev/zero bs=1 count=32 | od -v
0000000 000000 000000 000000 000000 000000 000000 000000 000000
0000020 000000 000000 000000 000000 000000 000000 000000 000000
0000040

使用例

ファイルを16進数形式で表示する

$ od -t x1 sample.bin
0000000 48 65 6c 6c 6f 20 57 6f 72 6c 64 0a
0000014

ファイルを複数の形式で同時に表示する

$ echo "ABC123" | od -t x1z -t c
0000000 41 42 43 31 32 33 0a                              >ABC123.<
0000007

16進数アドレスでバイナリデータを調査する

$ head -c 16 /dev/urandom | od -A x -t x1z
000000 ca f8 b1 35 94 55 29 45 9c 42 2a 8f 27 4a 0d 9e  >...5.U)E.B*..'J..<
000010

ファイルの内容をASCII文字として表示する

$ echo "Hello\tWorld\nTest" | od -c
0000000   H   e   l   l   o  \t   W   o   r   l   d  \n   T   e   s   t
0000020

ヒント

より良い分析のために形式タイプを組み合わせる

複数の-tオプションを使用して、同じデータを異なる形式で同時に表示することで、バイナリデータの解釈が容易になります。

$ echo "Hello" | od -t x1 -t c
0000000 48 65 6c 6c 6f 0a
         H   e   l   l   o  \n
0000006

パイプを使用して素早くデータを検査する

コマンド出力をodにパイプして、バイナリデータの素早い検査や隠れた文字を明らかにします。

$ cat /bin/ls | head -c 20 | od -t x1c

ファイルヘッダーを分析する

-Nと共にodを使用して、バイナリファイルのヘッダーバイトだけを調査します。これらには多くの場合、フォーマット情報が含まれています。

$ od -t x1 -N 16 image.jpg

非表示文字のデバッグ

予期しない動作のあるテキストファイルをトラブルシューティングする際、od -cを使用してキャリッジリターンやヌルバイトなどの非表示文字を明らかにします。

よくある質問

Q1. "od"は何の略ですか?

A. "od"は"octal dump"(8進ダンプ)の略で、元々はファイルの内容を8進数形式で表示する目的を反映しています。

Q2. ファイルを16進数形式で表示するにはどうすればよいですか?

A. od -t x1 ファイル名を使用して、ファイルを16進数形式で表示します。各バイトは個別に表示されます。

Q3. ASCII文字だけを表示するにはどうすればよいですか?

A. od -t c ファイル名を使用して、ファイルの内容をASCII文字として表示します。非表示文字はエスケープシーケンスとして表示されます。

Q4. ファイルの最初の数バイトをスキップするにはどうすればよいですか?

A. od -j N ファイル名を使用します。Nは表示を開始する前にスキップするバイト数です。

Q5. 出力からアドレス列を削除するにはどうすればよいですか?

A. od -A n ファイル名を使用して、出力のアドレス列を抑制します。

参考文献

https://www.gnu.org/software/coreutils/manual/html_node/od-invocation.html

改訂履歴