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