Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1486140
  • 博文数量: 263
  • 博客积分: 10851
  • 博客等级: 上将
  • 技术积分: 2627
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-26 22:40
文章分类

全部博文(263)

文章存档

2013年(4)

2012年(25)

2011年(33)

2010年(50)

2009年(138)

2008年(13)

分类: LINUX

2011-05-19 15:47:17

od [OPTION]... [FILE]...
od [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]
od --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.][b]]

[功能]
把文件用8进制或者其他的格式显示出来。通常用于查看特殊格式文件的内容。

[举例]
一. 用od查看file1内容,这里,file1使用"echo a >file1"生成的,己file1中只有一个字符a。
$od file1
输入之后,输出如下:
0000000 005141
0000002
二. 用od查看file1和file2的内容, 这里,file1的内容是a,file2的内容是b,将两个文件作为输入的时候,就把两个文件合并起来了。
$od file1 file2
输入之后,输出如下:
0000000 005141 005142
0000004
三. 用od查看test内容,地址基数用十进制显示:
$od -Ad test
输入之后,输出如下:
0000000 062550 062562 066440 065541 020145 020141 062564 072163
0000016 000012
0000017
这里,地址基数就是输入中的第一列。
四. 用字符来显示文件test:
$od -t c test 或$od -tc test
输入之后,输出如下:
0000000   h   e   r   e       m   a   k   e       a       t   e   s   t
0000020  \n
0000021
这里,文件的内容实际就是"here make a test"这一行内容,如果是中文的字符就会显示相应的编码了。
五. 每行只用2个字节显示:
$od -w2 test
输入之后,输出如下:
0000000 062550
0000002 062562
0000004 066440
0000006 065541
0000010 020145
0000012 020141
0000014 062564
0000016 072163
0000020 000012
0000021
这里,最少就是两个字节宽度了,如果指定一个字节,那么也自动变成两个字节的了。
六. 每行只用4个字节显示:
$od -w4 test
输入之后,输出如下:
0000000 062550 062562
0000004 066440 065541
0000010 020145 020141
0000014 062564 072163
0000020 000012
0000021
七. 字符方式输出test内容,跳过两个字节:
$ od -tc -j 2 test
输入之后,输出如下:
0000002   r   e       m   a   k   e       a       t   e   s   t  \n
0000021
八. 只显示两个字节,用字符方式显示:
$ od -tc -N2 test
输入之后,输出如下:
0000000   h   e
0000002
这里,为了便于读取,使用了字符的方式进行打印。如果同时指定了-j跳过的选项,那么就会从-j指定的相应位置打印2个字节。

[描述]
这个命令默认把文件的内容用八进制的形式清晰地写在标准输出上。如果是多个文件,那么会把文件合并显示,如果没指定文件名称,那么就择标准输入作为默认的输入。通过指定该命令的不同项可以以十进制、八进制、十六进制和ASCII码来显示文件。
常用的项:
-A 指定地址(文件offset)用什么基数打印,包括:
d 十进制
o 八进制(系统默认值)
x 十六进制
n 不打印位移值(也就是不打印地址偏移部分)
-j Bytes 首先跳过Bytes的输入。
-S [Bytes] 输出至少Bytes的图形字符串,这里的缩减形式等价于--strings[=Bytes]。
-w [Bytes] 指定每行的输出字节数目。
-N Bytes 指定显示的输入限定为Bytes字节。
-t 指定数据的显示格式,主要的参数有:
c ASCII字符或反斜杠序列
d[SIZE] 有符号十进制数,每个整数SIZE字节。
f[SIZE] 浮点数,每个整数SIZE字节。
o[SIZE] 八进制(系统默认值为02),每个整数SIZE字节。
u[SIZE] 无符号十进制数,每个整数SIZE字节。
x[SIZE] 十六进制数,每个整数SIZE字节。
除了项c以外的其他选项后面都可以跟一个十进制数n,指定每个显示值所包含的字节数。实际有一些简写形式,例如-t c等价于-c,具体参见man手册。
更详细的信息参见man手册。
说明:od命令系统默认的显示方式是八进制,这也是该命令的名称由来(Octal Dump)。但这不是最有用的显示方式,用ASCII码和十六进制组合的方式能提供更有价值的信息输出。

特别说明-v选项:
-v或--output-duplicates  输出时不省略重复的数据。(do not use * to mark line suppression)
默认情况下, 在两行数据一样时(重复行), 会直接把第二行显示为*号, 如:
# echo -n "pipe:[91847915]|pipe:[91847915]|" | od -t x1    
0000000 70 69 70 65 3a 5b 39 31 38 34 37 39 31 35 5d 7c
*
0000040
加上-v选项, 两行都会打印出来:
echo -n "pipe:[91847915]|pipe:[91847915]|" | od -v -t x1    
0000000 70 69 70 65 3a 5b 39 31 38 34 37 39 31 35 5d 7c
0000020 70 69 70 65 3a 5b 39 31 38 34 37 39 31 35 5d 7c
0000040
比如说在使用od尽兴url编码的时候, 可能会存在这种情况, 这时就需要加上-v选项
阅读(2914) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~