od コマンド 2016/02/08
バイナリファイルを16進数などでダンプするコマンド。ファイル名を指定するとファイルを読み込み、そうでない場合は標準入力を読み込み、標準出力にダンプする。
例
od -avtx1 -Ad ファイル名
または
cat ファイル名 | od -avtx1 -Ad
各行の左にはアドレス(ファイルの先頭からのバイト単位でのオフセット値)が表示される。アドレスはデフォルトでは8進数表記である。
インストール 2016/03/17
Coreutilsというパッケージに入っているので、CentOSにもUbuntuにも始めから入っている。
オプション 2016/05/10
-Ad
- 各行左に表示されるアドレス表示を10進数にする。デフォルトでは8進数である
-Ax
- 各行左に表示されるアドレス表示を16進数にする。デフォルトでは8進数である
-An
- 各行左に表示されるアドレス表示を非表示にする
-w8
- 8バイトごとに改行出力する。
w
のあとの数字を変えれば任意のバイト単位でできる。デフォルトは16バイト単位かな。 -x
- 2バイト単位で16進数で出力
-h
- 2バイト単位で16進数で出力。
-x
と同じ。 -tx1
- 1バイト単位で16進数で出力
-tx2
- 2バイト単位で16進数で出力。
x
のあとの数字を変えれば任意のバイト単位でできる -tu1
- 1バイト単位で10進数で出力
-tu2
- 2バイト単位で10進数で出力。
u
のあとの数字を変えれば任意のバイト単位でできる -c
- 文字で出力、またはC言語のようなバックスラッシュエスケープで出力
(128以上は8進数で表示されるようだ)。
-tc
と同じ -tc
- 文字で出力、またはC言語のようなバックスラッシュエスケープで出力
(128以上は8進数で表示されるようだ)。
-c
と同じ -a
- 制御文字などは文字の名前で出力。スペースは
sp
などと。-ta
と同じ -ta
- 制御文字などは文字の名前で出力。スペースは
sp
などと。-a
と同じ -v
- 出力行がまるごと前の行と同じだった場合に、デフォルトでは
*
だけが表示されて中身が省略されてしまう。 このオプションを付けると、その制御が無効になる。 --help
- ヘルプ表示
--version
- バージョン表示
--
というパラメータを渡すとそれ以降のパラメータをオプションではなくファイル名とみなしてくれるので、
-
で始まるファイル名を扱いたい場合に使うとよい。
実行例 2016/02/08
$ cat hello.txt
Hello, world!
$ od -x hello.txt
0000000 6548 6c6c 2c6f 7720 726f 646c 0a21
0000016
## 2バイトずつ16進数で表示される
$ od hello.txt
0000000 062510 066154 026157 073440 071157 062154 005041
0000016
## 8進数で表示。16進数の6548は、8進数の62510
$ od -c hello.txt
0000000 H e l l o , w o r l d ! \n
0000016
$ od -tx1 -a hello.txt
0000000 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 0a
H e l l o , sp w o r l d ! nl
0000016
## 出力フォーマットを2つ指定すると、2行でそれぞれ表示される
1行が15バイトのテキストで同じ行が続く場合の例
$ cat hello3.txt
Hello, world!!!
Hello, world!!!
$ od -x hello3.txt
0000000 6548 6c6c 2c6f 7720 726f 646c 2121 0a21
*
0000040
$ od -xv hello3.txt
0000000 6548 6c6c 2c6f 7720 726f 646c 2121 0a21
0000020 6548 6c6c 2c6f 7720 726f 646c 2121 0a21
0000040
改行含め同じ16バイトが2回繰り返すことになるので、デフォルトでは2行目が *
という表示になってしまう。
-v
を付けることで、繰り返しの場合もちゃんと表示させることができる。
左のアドレス表記を10進数にする例 (-Ad
)
$ od -vtx1 -Ad -a hello3.txt
0000000 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 21 21 0a
H e l l o , sp w o r l d ! ! ! nl
0000016 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 21 21 0a
H e l l o , sp w o r l d ! ! ! nl
0000032