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
文件
$ 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个字节,并使用八进制单字节进行解释