You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
3.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

od
===
输出文件的八进制、十六进制等格式编码的字节
## 补充说明
**od命令** 用于输出文件的八进制、十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符。
常见的文件为文本文件和二进制文件。此命令主要用来查看保存在二进制文件中的值。比如程序可能输出大量的数据记录每个数据是一个单精度浮点数。这些数据记录存放在一个文件中如果想查看下这个数据这时候od命令就派上用场了。在我看来od命令主要用来格式化输出文件数据即对文件中的数据进行无二义性的解释。不管是IEEE754格式的浮点数还是ASCII码od命令都能按照需求输出它们的值。
### 语法
```
od(选项)(参数)
```
### 选项
```
-a此参数的效果和同时指定“-ta”参数相同
-A<字码基数>:选择以何种基数计算字码;
-b此参数的效果和同时指定“-toC”参数相同
-c此参数的效果和同时指定“-tC”参数相同
-d此参数的效果和同时指定“-tu2”参数相同
-f此参数的效果和同时指定“-tfF”参数相同
-h此参数的效果和同时指定“-tx2”参数相同
-i此参数的效果和同时指定“-td2”参数相同
-j<字符数目>或--skip-bytes=<字符数目>:略过设置的字符数目;
-l此参数的效果和同时指定“-td4”参数相同
-N<字符数目>或--read-bytes=<字符数目>:到设置的字符树目为止;
-o此参数的效果和同时指定“-to2”参数相同
-s<字符串字符数>或--strings=<字符串字符数>:只显示符合指定的字符数目的字符串;
-t<输出格式>或--format=<输出格式>:设置输出格式;
-v或--output-duplicates输出时不省略重复的数据
-w<每列字符数>或--width=<每列字符数>:设置每列的最大字符数;
-x此参数的效果和同时指定“-h”参数相同
--help在线帮助
--version显示版本信息。
```
### 参数
文件:指定要显示的文件。
### 实例
```
[linuxde@localhost ~]$ echo abcdef g > tmp
[linuxde@localhost ~]$ cat tmp
abcdef g
```
说明先准备一个tmp文件
```
[linuxde@localhost ~]$ od -b tmp
0000000 141 142 143 144 145 146 040 147 012
0000011
```
说明:使用单字节八进制解释进行输出,注意左侧的默认地址格式为八字节
```
[linuxde@localhost ~]$ od -c tmp
0000000 a b c d e f g \n
0000011
```
说明使用ASCII码进行输出注意其中包括转义字符
```
[linuxde@localhost ~]$ od -t d1 tmp
0000000 97 98 99 100 101 102 32 103 10
0000011
```
说明:使用单字节十进制进行解释
```
[linuxde@localhost ~]$ od -A d -c tmp
0000000 a b c d e f g \n
0000009
```
说明:设置地址格式为十进制。
```
[linuxde@localhost ~]$ od -A x -c tmp
000000 a b c d e f g \n
000009
```
说明:设置地址格式为十六进制
```
[linuxde@localhost ~]$ od -j 2 -c tmp
0000002 c d e f g \n
0000011
```
说明:跳过开始的两个字节
```
[linuxde@localhost ~]$ od -N 2 -j 2 -c tmp
0000002 c d
0000004
```
说明:跳过开始的两个字节,并且仅输出两个字节
```
[linuxde@localhost ~]$ od -w1 -c tmp
0000000 a
0000001 b
0000002 c
0000003 d
0000004 e
0000005 f
0000006
0000007 g
0000010 \n
0000011
```
说明每行仅输出1个字节
```
[linuxde@localhost ~]$ od -w2 -c tmp
0000000 a b
0000002 c d
0000004 e f
0000006 g
0000010 \n
0000011
```
说明:每行输出两个字节
```
[linuxde@localhost ~]$ od -w3 -b tmp
0000000 141 142 143
0000003 144 145 146
0000006 040 147 012
0000011
```
说明每行输出3个字节并使用八进制单字节进行解释
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->