od コマンド
ファイルの内容を様々な形式で表示します。主に8進数、10進数、16進数形式で表示します。
概要
od
(octal dump)コマンドは、ファイルの内容を異なる形式で表示します。元々は8進数形式でデータを表示するために設計されましたが、現代のバージョンでは16進数、10進数、ASCII、その他多くの出力形式をサポートしています。特にバイナリファイルの調査、非表示文字の表示、またはファイルの内容をバイト単位で分析する際に便利です。
オプション
-t, --format=TYPE
出力形式を指定します。一般的なTYPE値には以下があります:
a
- 名前付き文字c
- ASCII文字またはバックスラッシュエスケープd
- 符号付き10進数o
- 8進数(デフォルト)x
- 16進数f
- 浮動小数点
$ echo "Hello" | od -t c
0000000 H e l l o \n
0000006
-A, --address-radix=RADIX
ファイルオフセットの形式を指定します。RADIXには以下があります:
d
- 10進数o
- 8進数(デフォルト)x
- 16進数n
- なし(アドレスなし)
$ 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
改訂履歴
- 2025/05/05 初版