od
2022-09-07 21:49:21 # 操作系统 # Linux # shell # 常用命令 # 文件展示命令

1. 命令作用

od命令可以把文件的内容以字节块的形式展示,可以让我们看到文件的二进制数据。

2. 展示格式

od命令是一行一行展示文件内容的,每一行的展示格式如下:

偏移量 字节块1 字节块2 字节块3……

偏移量是使用8进制表示的整数,代表当前展示的是文件中第几个字节开始的,默认偏移量是从0开始

每一个字节块的长度默认是C语言short int类型的字节长度,一般是两个字节,用8进制数表示,默认一行展示16个字节。

3. 选项

3.1. -w[n] 或 --width[-n]

设置od命令一行展示的字节个数,默认是16,如果指定了选项,但是没有给出n,那么是32字节

3.2. --endian=order

当od命令一个字节块包含多个字节的时候,字节展示的顺序,order有大端方式(big)和小断方式(little)。

3.3. -A radix 或 --address-radix=radix

设置偏移量的显示格式,radix有如下选择:

  • d:十进制
  • o:8进制(默认)
  • x:十六进制
  • n:不显示偏移量

3.4. -t type 或 --format=type

指定字节块的展示样式,od是按照字节块展示数据的,那么一个字节块是展示成字符,十进制数字,还是浮点数呢?需要我们指定。

type的取值:

  • a:以字符形式展示数据,一个字节一组,且只看低7位组成的ASCII的值,如果是可打印的字符,那么对应的字符,有些字符会换成字符的名称展示,例如如果是空格,打印sp,如果是换行打印nl,是0字节则打印nul;
  • c:一个字节一组,如果是可打印的字符,那么打印其ASCII的值,否则如果可以表示成使用反斜杠转义的C语言风格的字符,则转义后打印(例如换行就打印为\n),否则使用3位8进制数字表示这个字节。
  • d:有符号十进制整数,4个字节一组。
  • u:无符号十进制整数,4字节一组。
  • f:浮点数,8个字节一组
  • o:8进制整数,4字节一组
  • x:十六进制,4个字节一组。

除了a和c以外,剩下的type取值的中字节块包含的字节数可以使用一个是进制数来指定,例如我想让文件内容显示为十进制,但是想一个字节一组,即一个字节显示为一个十进制整数,可以使用-t d1,其中1个字节,刚好数C语言中的char类型的字节长度,也可以写成-t dc

其他情况类似,字节个数和对应的替换字符如下:

  • c:char 1字节
  • s:short 2字节
  • I: int 4字节
  • L: long 8/4字节
  • F:float 4字节
  • D: double 8字节
  • L:long double 10/12字节

还有一些快捷选项:

  • -a,等于 -t a
  • -b,等于 -t o1
  • -c,等于 -t c
  • -d,等于 -t u2
  • -f,等于 -t fF
  • -i,等于 -t dI
  • -l,等于 -t dL
  • -o,等于-t o2
  • -s,等于 -t d2
  • -x,等于 -t x2