本文主要讲述一下Linux中dd命令的使用。

1. od命令

od命令用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示。通常用于显示或查看文件中不能直接显示在终端的字符。od命令系统默认的显示方式是八进制,名称源于Octal Dump。

常见的文件为文本文件和二进制文件。od命令主要用来查看保存在二进制文件中的值,按照指定格式解释文件中的数据并输出,不管是IEEE754格式的浮点数还是ASCII码,od命令都能按照需求输出它们的值。

1.1 命令格式

# od [OPTION]... [FILE]...

其中命令选项主要有:

-A, --address-radix=RADIX
         在输出中以何种格式来表示地址偏移,其中RADIX的可选值有[doxn]。d表示Decimal,
         o表示Octal,x表示Hex,n表示None

-j, --skip-bytes=BYTES
         表示跳过开头的BYTES个字节

-N, --read-bytes=BYTES
         表示只dump BYTES个字节

-S BYTES, --strings[=BYTES]
         输出长度不小于指定字节数的字符串

-w[BYTES], --width[=BYTES]
         设置每行显示的字节数,od默认每行显示32字节

-t, --format=TYPE
         指定输出格式,格式包括a、c、d、f、o、u和x,各含义如下:
         1) a: named character, ignoring high-order bit
         2) c: select printable characters or backslash escapes
         3) d[SIZE]:十进制,正负数都包含,SIZE字节组成一个十进制整数;
         4) f[SIZE]:浮点,SIZE字节组成一个浮点数;
         5) o[SIZE]:八进制,SIZE字节组成一个八进制数;
         6) u[SIZE]:无符号十进制,只包含正数,SIZE字节组成一个无符号十进制整数;
         7) x[SIZE]:十六进制,SIZE字节为单位以十六进制输出,即输出时一列包含SIZE字节


此外,我们还有一些简写的方式来输出相应格式:
-a     same as -t a,  select named characters, ignoring high-order bit

-b     same as -t o1, select octal bytes

-c     same as -t c,  select printable characters or backslash escapes

-d     same as -t u2, select unsigned decimal 2-byte units

-f     same as -t fF, select floats

-i     same as -t dI, select decimal ints

-l     same as -t dL, select decimal longs

-o     same as -t o2, select octal 2-byte units

-s     same as -t d2, select decimal 2-byte units

-x     same as -t x2, select hexadecimal 2-byte units

1.2 使用实例

首先我们先准备一个tmp文件:

# echo abcdef g >tmp
# cat tmp
abcdef g

1) 使用单字节八进制解释进行输出

# od -b ./tmp
0000000 141 142 143 144 145 146 040 147 012
0000011

注意: 左侧的默认地址格式为八进制表示

2) 使用ascii码进行输出

# od -c ./tmp
0000000   a   b   c   d   e   f       g  \n
0000011

注意,其中包括转义字符

3) 使用单字节十进制进行解释

# od -t d1 ./tmp
0000000   97   98   99  100  101  102   32  103   10
0000011

4) 设置地址格式为十进制

# od -A d -c ./tmp
0000000   a   b   c   d   e   f       g  \n
0000009

5) 设置地址格式为十六进制

# od -A x -c ./tmp
000000   a   b   c   d   e   f       g  \n
000009

6) 跳过开始的2个字节

# od -j 2 -c ./tmp
0000002   c   d   e   f       g  \n
0000011

7) 跳过开始的两个字节,并且仅输出两个字节

# od -N 2 -j 2 -c ./tmp
0000002   c   d
0000004

8) 每行仅输出1个字节

# od -w1 -c tmp
0000000   a
0000001   b
0000002   c
0000003   d
0000004   e
0000005   f
0000006    
0000007   g
0000010  \n
0000011

9) 每行输出两个字节

# od -w2 -c tmp
0000000   a   b
0000002   c   d
0000004   e   f
0000006       g
0000010  \n
0000011

10) 每行输出3个字节,并使用八进制单字节进行解释

# od -w3 -b tmp
0000000 141 142 143
0000003 144 145 146
0000006 040 147 012
0000011

2. xxd命令

这里顺带再介绍一个xxd命令,该命令以十六进制方式显示文件,例如:

# xxd ./tmp
00000000: 6162 6364 6566 2067 0a                   abcdef g.



[参看]

  1. od命令

  2. Linux od命令详细介绍及用法实例