【linux命令讲解大全】029.深入了解od命令:文件数据解析利器

2024-03-02 11:35:19 浏览数 (1)

od命令

od 命令用于输出文件的八进制、十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符。

常见的文件为文本文件和二进制文件。此命令主要用来查看保存在二进制文件中的值。比如,程序可能输出大量的数据记录,每个数据是一个单精度浮点数。这些数据记录存放在一个文件中,如果想查看下这个数据,这时候 od 命令就派上用场了。在我看来,od 命令主要用来格式化输出文件数据,即对文件中的数据进行无二义性的解释。不管是 IEEE754 格式的浮点数还是 ASCII 码,od 命令都能按照需求输出它们的值。

语法

代码语言:javascript复制
od [选项] [参数]

选项

  • -a:此参数的效果和同时指定 -t a 参数相同;
  • -A <字码基数>:选择以何种基数计算字码;
  • -b:此参数的效果和同时指定 -t oC 参数相同;
  • -c:此参数的效果和同时指定 -t C 参数相同;
  • -d:此参数的效果和同时指定 -t u2 参数相同;
  • -f:此参数的效果和同时指定 -t fF 参数相同;
  • -h:此参数的效果和同时指定 -t x2 参数相同;
  • -i:此参数的效果和同时指定 -t d2 参数相同;
  • -j <字符数目>--skip-bytes=<字符数目>:略过设置的字符数目;
  • -l:此参数的效果和同时指定 -t d4 参数相同;
  • -N <字符数目>--read-bytes=<字符数目>:到设置的字符树目为止;
  • -o:此参数的效果和同时指定 -t o2 参数相同;
  • -s <字符串字符数>--strings=<字符串字符数>:只显示符合指定的字符数目的字符串;
  • -t <输出格式>--format=<输出格式>:设置输出格式;
  • -v--output-duplicates:输出时不省略重复的数据;
  • -w <每列字符数>--width=<每列字符数>:设置每列的最大字符数;
  • -x:此参数的效果和同时指定 -h 参数相同;
  • --help:在线帮助;
  • --version:显示版本信息。

参数

  • 文件:指定要显示的文件。

实例

代码语言:javascript复制
$ echo abcdef g > tmp
$ cat tmp
abcdef g

说明:先准备一个 tmp 文件

代码语言:javascript复制
$ od -b tmp
0000000 141 142 143 144 145 146 040 147 012
0000011

说明:使用单字节八进制解释进行输出,注意左侧的默认地址格式为八字节

代码语言:javascript复制
$ od -c tmp
0000000   a   b   c   d   e   f       g  n
0000011

说明:使用 ASCII 码进行输出,注意其中包括转义字符

代码语言:javascript复制
$ od -t d1 tmp
0000000   97   98   99  100  101  102   32  103   10
0000011

说明:使用单字节十进制进行解释

代码语言:javascript复制
$ od -A d -c tmp
0000000   a   b   c   d   e   f       g  n
0000009

说明:设置地址格式为十进制。

代码语言:javascript复制
$ od -A x -c tmp
000000   a   b   c   d   e   f       g  n
000009

说明:设置地址格式为十六进制

代码语言:javascript复制
$ od -j 2 -c tmp
0000002   c   d   e   f       g  n
0000011

说明:跳过开始的两个字节

代码语言:javascript复制
$ od -N 2 -j 2 -c tmp
0000002   c   d
0000004

说明:跳过开始的两个字节,并且仅输出两个字节

代码语言:javascript复制
$ od -w1 -c tmp
0000000   a
0000001   b
0000002   c
0000003   d
0000004   e
0000005   f
0000006   
0000007   g
0000010  n
0000011

说明:每行仅输出1个字节

代码语言:javascript复制
$ od -w2 -c tmp
0000000   a   b
0000002   c   d
0000004   e   f
0000006       g
0000010  n
0000011

说明:每行输出两个字节

代码语言:javascript复制
$ od -w3 -b tmp
0000000 141 142 143
0000003 144 145 146
0000006 040 147 012
0000011

说明:每行输出3个字节,并使用八进制单字节进行解释

0 人点赞