od 查看特殊格式的文件内容

功能:od命令查看特殊格式的文件内容。默认的显示方式是八进制,这也是该命令的名称由来(octal dump)。通过指定该命令的不同项可以以十进制、八进制、十六进制和ASCII码来显示文件。如果是多个文件,那么会把文件合并显示。如果没指定文件名称,那么就择标准输入作为默认的输入。

语法:od    [选项]   [文件]
参数 含义
-A 指定地址(文件offset)用什么基数显示,包括:
d 十进制
o 八进制(系统默认值)
x 十六进制
n 不输出位移值
-t 指定数据的显示格式,主要的参数有
c ASCII字符或反斜杠序列
d[SIZE] 十进制
f[SIZE] 浮点数每个整数 SIZE 字节。
o[SIZE] 八进制(系统默认值02)每个整数 SIZE 字节。
u[SIZE] 无符号十进制数每个整数 SIZE 字节。
x[SIZE] 十六进制每个整数 SIZE 字节。
-j Bytes 首先跳过 Bytes 的输入
-S [Bytes] 输出至少 Bytes 的图形字符串,这里的缩减形式等价于–strings[=Bytes]。
-w [Bytes] 指定每行的输出字节数目
-N Bytes 指定显示的输入限定为 Bytes 字节

 

ysun@linetcps1dev:~>$ od - Ax - tcx1 wh5   用ASCII码和十六进制组合的方式,显示wh5文件 
000000 F i l e s y s t e m 
46 69 6c 65 73 79 73 74 65 6d 20 20 20 20 20 20 
000010 1 k - b l o c k s 
20 20 20 20 20 31 6b 2d 62 6c 6f 63 6b 73 20 20 
000020 U s e d A v a i l a b 
20 20 20 20 55 73 65 64 20 41 76 61 69 6c 61 62 
000030 l e U s e % M o u n t e d 
6c 65 20 55 73 65 25 20 4d 6f 75 6e 74 65 64 20 
 
 
ysun@linetcps1dev:~>$ cat a   显示a文件内容 
hello,world. 
Joey. 
ysun@linetcps1dev:~>$ od -Ax -tcx4 a   用ASCII码和十六进制组合的方式,显示a文件 
000000 h e l l o , w o r l d . \n \t J o 
6c6c6568 6f772c6f 2e646c72 6f4a090a 
000010 e y . \n \n \0 \0 \0 
0a2e7965 0000000a 
000015 

 

od 实例

用od查看file1内容 
$ od file1   这里,file1使用"echo a >file1"生成的,己file1中只有一个字符a 
0000000 005141 
0000002 
 
 
用od查看file1和file2的内容 
$ od file1 file2   file1的内容是a,file2的内容是b,将两个文件作为输入的时候,就把两个文件合并起来了  
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   文件的内容实际就是"here make a test"这一行内容,如果是中文的字符就会显示相应的编码了 
0000000   h   e   r   e       m   a   k   e       a       t   e   s   t 
0000020  \n 
0000021 
 
 
每行只用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个字节。