はじめに

こんにちは!今回はodコマンドについて解説します。

odは、ファイルやテキストの内容を8進数(octal dump)や16進数、ASCII文字などで表示するコマンドです。バイナリファイルの内容を確認する時に活躍します。

デバッグやファイルの詳細な確認が必要な時に、めっちゃ便利ですよ。

odコマンドとは

odは、ファイルの内容をさまざまなフォーマットでダンプ(表示)する外部コマンドです。

主な機能:

  1. フォーマット指定 - 8進数、16進数、10進数、ASCII文字など
  2. バイナリ表示 - テキストファイル以外も表示可能
  3. オフセット表示 - ファイル内の位置を一緒に表示
  4. 複数フォーマット - 複数の形式を同時表示可能
  5. バイト単位制御 - 特定範囲のみ表示

バイナリファイルの内容を詳細に確認できます。

基本構文

1
od [オプション] ファイル

標準入力からも読み込み可能。

主なオプション

オプション 説明
-t 形式 出力フォーマット指定(x=16進数、o=8進数、d=10進数、cなど)
-A 形式 アドレス表示形式(x=16進数、o=8進数、d=10進数)
-N バイト数 最初のN バイトのみ表示
-j オフセット 開始位置をオフセット指定
-v 同じ行の繰り返しも表示
-c ASCII文字表示(昔のフォーマット)
-x 16進数表示(昔のフォーマット)

使用例

例1: 基本的なファイル表示(8進数)

1
2
echo "hello" > test.txt
od test.txt

実行結果:

1
2
0000000 150 145 154 154 157 012
0000006

デフォルトは8進数。各バイトが8進数で表示されます。

例2: 16進数で表示

1
od -t x1 test.txt

実行結果:

1
2
0000000 68 65 6c 6c 6f 0a
0000006

-t x1で16進数1バイト単位。

例3: ASCII文字と一緒に表示

1
od -t x1z test.txt

実行結果:

1
2
3
0000000 68 65 6c 6c 6f 0a
          h  e  l  l  o \n
0000006

16進数とASCII文字を一緒に表示。

例4: キャラクター表示

1
od -c test.txt

実行結果:

1
2
0000000   h   e   l   l   o  \n
0000006

-cでASCII文字で表示。

例5: 10進数で表示

1
od -t d1 test.txt

実行結果:

1
2
0000000 104 101 108 108 111  10
0000006

-t d1で10進数1バイト単位。

例6: 最初の10バイトのみ表示

1
echo "hello world" | od -N 10 -t x1

実行結果:

1
2
0000000 68 65 6c 6c 6f 20 77 6f 72 6c
0000012

-Nで表示するバイト数を限定。

例7: オフセット指定して表示

1
echo "hello world" | od -j 6 -N 5 -t x1z

実行結果:

1
2
3
0000006 77 6f 72 6c 64
          w  o  r  l  d
0000013

位置6から5バイト表示。

例8: バイナリファイル表示

1
od -t x2 /bin/ls | head

実行結果:

1
2
3
0000000 457f 464c 0102 0001 0000 0000 0000 0000
0000020 0002 003e 0001 0000 0000 0000 0000 0000
...

バイナリファイルを16進数で表示。

例9: アドレスを10進数で表示

1
echo "hello" | od -A d -t x1

実行結果:

1
2
0000000 68 65 6c 6c 6f 0a
0000006

-A dでアドレスを10進数で表示。

例10: 複数行の内容をすべて表示

1
printf "line1\nline2\nline3\n" | od -c

実行結果:

1
2
3
0000000   l   i   n   e   1  \n   l   i   n   e   2  \n   l   i   n   e
0000020   3  \n
0000023

複数行もそのまま表示。

Tips・注意点

形式指定の詳細

1
2
3
4
5
6
# -t の後の指定
-t x1   # 16進数、1バイト単位
-t x2   # 16進数、2バイト単位
-t d1   # 10進数、1バイト単位
-t c    # ASCII文字
-t z    # ASCII文字(ASCIIでない部分は.)

複数の形式を同時に指定可能:-t x1z

アドレス指定形式

1
2
3
4
-A o    # 8進数(デフォルト)
-A d    # 10進数
-A x    # 16進数
-A n    # アドレス表示しない

大きなファイルの確認

1
od -N 1024 -t x1 largefile.bin

最初の1024バイトのみ確認。

実践的な使い方

ファイルの改行コード確認

1
od -c file.txt | grep -E '\\r|\\n'

CR、LFを確認。

バイナリファイルの署名確認

1
od -t x1 -N 4 file.bin

ファイル形式の署名(マジックナンバー)を確認。

テキストエンコーディング確認

1
od -t x1z file.txt | head

ファイルのバイト列を確認してエンコーディングを推測。

パイプで使用

1
echo "test" | od -t x1

標準入力からのデータを処理。

ダンプ出力の視覚化

1
od -A x -t x1z -v file.txt

16進数アドレスと一緒に、詳細に表示。

まとめ

odコマンドのポイント:

  • ファイル内容を複数のフォーマットで表示するコマンド
  • 8進数: デフォルト(オプションなし)
  • 16進数: -t x1
  • 10進数: -t d1
  • ASCII文字: -c または -t c
  • 複合表示: -t x1z(16進数とASCII一緒に)
  • 制御: -N(バイト数)、-j(オフセット)
  • よく使う組み合わせ: od -t x1z, od -c, od -t x1 -N 16

バイナリファイルやテキストファイルの詳細確認が必要な時に最高のコマンドですよ!