Linux指令od和hexdump

Linux指令:od (octal dump)

示例用法:od -c hello

Linux指令:od

od命令
用户通常使用od命令查看特殊格式的文件内容。通过指定该命令的不同选项可以以十进制、八进制、十六进制和ASCII码来显示文件。

语法:od [选项] 文件…
命令中各选项的含义:
- A 指定地址基数,包括:
d 十进制
o 八进制(系统默认值)
x 十六进制
n 不打印位移值
- t 指定数据的显示格式,主要的参数有:
c ASCII字符或反斜杠序列
d 有符号十进制数
f 浮点数
o 八进制(系统默认值为02)
u 无符号十进制数
x 十六进制数
除了选项c以外的其他选项后面都可以跟一个十进制数n,指定每个显示值所包含的字节数。

说明:od命令系统默认的显示方式是八进制,这也是该命令的名称由来(Octal
Dump)。但这不是最有用的显示方式,用ASCII码和十六进制组合的方式能提供更有价值的信息输出。

例如:

  1. $ od - Ax - tcx1 wh5  
  2. 000000 F i l e s y s t e m  
  3. 46 69 6c 65 73 79 73 74 65 6d 20 20 20 20 20 20  
  4. 000010 1 k - b l o c k s  
  5. 20 20 20 20 20 31 6b 2d 62 6c 6f 63 6b 73 20 20  
  6. 000020 U s e d A v a i l a b  
  7. 20 20 20 20 55 73 65 64 20 41 76 61 69 6c 61 62  
  8. 000030 l e U s e % M o u n t e d  
  9. 6c 65 20 55 73 65 25 20 4d 6f 75 6e 74 65 64 20  
  10.  
  11. ---- My test -----  
  12. ysun@linetcps1dev:~> cat a  
  13. hello,world.  
  14. Joey.  
  1. ysun@linetcps1dev:~> od -Ax -tcx4 a  
  2. 000000 h e l l o , w o r l d . \n \t J o  
  3. 6c6c6568 6f772c6f 2e646c72 6f4a090a  
  4. 000010 e y . \n \n \0 \0 \0  
  5. 0a2e7965 0000000a  
  6. 000015 

 

常用发:

root@iZ23onhpqvwZ:~/ms/linux/sysProgram# od -c creatfile.txt
0000000 a b c d e f g h i j \0 \0 \0 \0 \0 \0
0000020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000040 \0 \0 \0 \0 \0 \0 \0 \0 A B C D E F G H
0000060 I J
0000062

root@iZ23onhpqvwZ:~/ms/linux/sysProgram# od -x -c creatfile.txt
0000000 6261 6463 6665 6867 6a69 0000 0000 0000
a b c d e f g h i j \0 \0 \0 \0 \0 \0
0000020 0000 0000 0000 0000 0000 0000 0000 0000
\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000040 0000 0000 0000 0000 4241 4443 4645 4847
\0 \0 \0 \0 \0 \0 \0 \0 A B C D E F G H
0000060 4a49
I J
0000062

 

root@iZ23onhpqvwZ:~/ms/linux/sysProgram# od -x creatfile.txt
0000000 6261 6463 6665 6867 6a69 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
0000040 0000 0000 0000 0000 4241 4443 4645 4847
0000060 4a49
0000062

 

root@iZ23onhpqvwZ:~/ms/linux/sysProgram# hexdump -C creatfile.txt
00000000 61 62 63 64 65 66 67 68 69 6a 00 00 00 00 00 00 |abcdefghij......|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 00 00 00 00 00 00 00 00 41 42 43 44 45 46 47 48 |........ABCDEFGH|
00000030 49 4a |IJ|
00000032

注意hexdump -C为大写:

-C Canonical hex+ASCII display. Display the input offset in hexadecimal, followed by sixteen space-separated, two column, hexadecimal
bytes, followed by the same sixteen bytes in %_p format enclosed in ``|‘‘ characters

-c小写只显示字符

od 和 hexdump
实用程序 od 和 hexdump 分别输出文件或流的八进制、十六进制或其他编码的字节。它们对于访问或可视地检查文件中不能直接显示在终端上的字符很有用。

HERE 文档
有一种特殊的重定向值得在本教程中提一下。虽然严格地讲,HERE 文档是诸如 bash 这样的 shell
的特性,而不是与文本实用程序有关的任何东西,但是它们提供了向文本实用程序发送特殊数据的有用途径。
双小于号重定向可用于从终端接收伪文件的内容。HERE 文档必须紧跟在 << 后面指定一个终止分隔符。
如:

  1. $ od -c <<END 
  2. > Alice  
  3. > Bob  
  4. > END  
  5. 0000000 A l i c e \n B o b \n  
  6. 0000012 

任何字符串都可以用作分隔符;输入将在一行上遇到该字符串本身的地方终止。这样为我们提供了创建持久性文件的快捷方法:

  1. $ cat myfile <<EOF 
  2. > Dave  
  3. > Edna  
  4. > EOF  
  5. $ hexdump -C myfile  
  6. 00000000 44 61 76 65 0a 45 64 6e 61 0a |Dave.Edna.|  
  7. 0000000a 

这就是Linux指令od的知识。

参考:http://codingstandards.iteye.com/blog/805778

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。