首页 » 信息技术 »

xxd命令

2020年12月6日 / 15次阅读
Linux命令

xxd命令跟hexdump比较相似,都是用来查看二进制文件的内容,不过用起来,xxd命令似乎更顺手一点。

如果没有任何参数,xxd命令默认将文件内容按16进制的方式显示出来,并在右侧配合“翻译”:

$ cat t2.txt
i love linux, haha...
$ xxd t2.txt
00000000: 6920 6c6f 7665 206c 696e 7578 2c20 6861  i love linux, ha
00000010: 6861 2e2e 2e0a                           ha....

每行显示16个字节。

-b参数,以2进制的方式显示内容:

$ xxd -b t2.txt
00000000: 01101001 00100000 01101100 01101111 01110110 01100101  i love
00000006: 00100000 01101100 01101001 01101110 01110101 01111000   linux
0000000c: 00101100 00100000 01101000 01100001 01101000 01100001  , haha
00000012: 00101110 00101110 00101110 00001010                    ....

每行显示6个字节的2进制。

-s参数,skip,跳过N个字节:

$ xxd -s 6 t2.txt
00000006: 206c 696e 7578 2c20 6861 6861 2e2e 2e0a   linux, haha....
$ xxd -s 6 -b t2.txt
00000006: 00100000 01101100 01101001 01101110 01110101 01111000   linux
0000000c: 00101100 00100000 01101000 01100001 01101000 01100001  , haha
00000012: 00101110 00101110 00101110 00001010                    ....

从开始地址00000006可以看出,前面6个字节被跳过。

-l参数,len,显示长度:

$ xxd -l 10 t2.txt
00000000: 6920 6c6f 7665 206c 696e                 i love lin
$ xxd -l 10 -b t2.txt
00000000: 01101001 00100000 01101100 01101111 01110110 01100101  i love
00000006: 00100000 01101100 01101001 01101110                     lin

很多时候,我们是-s和-l一起用,这样可以查看文件任意一段的内容。

-c参数,column,定义每行多少列(前面的示例说明,16进制显示默认是8列,每列2个字节;2进制显示默认是6列,每列1个字节):

$ xxd -c 8 t2.txt
00000000: 6920 6c6f 7665 206c  i love l
00000008: 696e 7578 2c20 6861  inux, ha
00000010: 6861 2e2e 2e0a       ha....
$ xxd -c 4 -b t2.txt
00000000: 01101001 00100000 01101100 01101111  i lo
00000004: 01110110 01100101 00100000 01101100  ve l
00000008: 01101001 01101110 01110101 01111000  inux
0000000c: 00101100 00100000 01101000 01100001  , ha
00000010: 01101000 01100001 00101110 00101110  ha..
00000014: 00101110 00001010                    ..

-g参数,group,用来定义每列所包含的字节数,即多少个字节算一组:

$ xxd -c 8 -g 1 t2.txt
00000000: 69 20 6c 6f 76 65 20 6c  i love l
00000008: 69 6e 75 78 2c 20 68 61  inux, ha
00000010: 68 61 2e 2e 2e 0a        ha....
$ xxd -c 24 -g 4 t2.txt
00000000: 69206c6f 7665206c 696e7578 2c206861 68612e2e 2e0a      i love linux, haha....

一般-g参数会跟-c参数一起配合使用。当然也可以配合-s和-l参数。

-a参数,autoskip,用来自动跳过连续的0。

-r参数,revert,反向操作,将16进制或2进制输入流,重新转换成文件:

$ xxd t2.txt | xxd -r
i love linux, haha...

用-b参数生成的2进制显示,不能配合使用-r反转。

-r参数如果与-s参数配合,可以起到在新生成的字节流前面增加多少个0的效果:

$ xxd t2.txt | xxd -r -s 8 | xxd -c 8
00000000: 0000 0000 0000 0000  ........
00000008: 6920 6c6f 7665 206c  i love l
00000010: 696e 7578 2c20 6861  inux, ha
00000018: 6861 2e2e 2e0a       ha....

貌似不能在后面补0。

下面的命令,可以将输入文件中任意一端截取出来,存入新的文件:

$ xxd -s 6 -l 8 t2.txt | xxd -r > tt.txt
$ cat tt.txt
 linux, 

其它xxd命令的参数,请自行查阅man xxd。

本文链接:https://www.maixj.net/ict/xxd-24186

留言区


前一篇:
后一篇:
-->只要几分钟回答问卷,就能轻松赚现金!

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

go to top