当前位置:C++技术网 > 资讯 > Linux的常用Shell命令新手入门:18 文件操作命令-查看非文本文件命令3

Linux的常用Shell命令新手入门:18 文件操作命令-查看非文本文件命令3

更新时间:2016-09-17 21:10:10浏览次数:1+次

查看非文本文件内容:常用查看非文本文件命令hexdump

    在此说明一下,我们这里说的od、xxd和hexdump,是查看非文本文件的命令,说的是以非文本方式查看文件数据。不管是说明文件,在存储时都是非文本形式的,文本文件只是因为存储时和读取时是重新按照编码表转换了而已。而非文本方式查看是直接查看存储的数据,然后进行了进制的转换而已。在计算机内部都是二进制,转换进制是为了人方便理解。

    本文讲的hexdump命令,从名称也就可以明白一二了。od、xxd的d也就是dump的缩写。xx代表双字节为一组显示的十六进制数据。我们的hexdump默认的显示也是双字节一组的数据。虽然都是双字节,但是有区别,看下面的对比图:

查看非文本文件内容:常用查看非文本文件命令hexdump

    我们可以细心观察下,可以发现,xxd 和 hexdump显示的数据双字节的顺序是相反的。xxd的数据由低字节到高字节依次显示,双字节数据中,低字节在前,高字节在后,而hexdump的双字节显示的数据中,低字节在后,高字节在前,前一组较后一组低。也就是说,xxd和hexdump在双字节排序时有差别。所以他们并不是一样的哦。

    我们在Windows中使用WinHex软件时会发现,hexdump显示的顺序和WinHex一致。这也是hexdump比xxd更常用的一个原因。这都是在默认情况下显示的效果。

    另外,hexdump还使用选项C让输出格式几乎和WinHex软件的一样,更是让hexdump使用更符合大家的习惯,这样各个软件保存的二进制数据格式一致,兼容性更好。下面介绍命令选项时就可以看到效果。


语法:hexdump [选项] 文件名

描述:hex是十六进制的意思。当然,hexdump命令可以方便的使用其他进制来显示数据。而xxd则剑走偏锋,除了二进制和十六进制,其他进制没有支持。而我们经常需要的时,常用的十六进制作为默认,也可以在需要的时候通过参数来使用其他进制,这样的需求xxd不满足,hexdump很好的满足了。这也是hexdump广泛使用的原因之一,只是hexdump拼写有点长而已,这是美中不足的地方。

选项:

-n 长度(lenght)字节数 只格式化输入文件的前[长度字节数]个字节。

用法:hexdump -n 3 1.txt

效果:

hexdump -n 3 1.txt

-C (Canonical典型的,规范的)输出规范的十六进制和ASCII码。最常用的。

用法:hexdump -C 3.txt

效果:

hexdump -C 3.txt

上图可以看到,最左边是十六进制的地址,中间是单字节一组显示的十六进制数据,最右边是ASCII字符形式,这就是标准的WinHex软件显示格式。看到这个效果,相信很多人都是很熟悉的。


-b (byte字节)单字节八进制显示。

用法:hexdump -b 3.txt

效果:

hexdump -b 3.txt

八进制显示的数据,前面都带着一个0。这是八进制表示方法,在计算机基础课中就学过了哦。

-c (character字符)单字节字符ASCII显示。

用法:hexdump -c 1.txt

效果:

hexdump -c 1.txt

-d (decimal十进制)双字节十进制显示。

-o (octal八进制)双字节八进制显示。
-x (hexadecimal十六进制)双字节十六进制显示。

最后三个就不截图说明了,用法也参照上面。可以看到,hexdump是非常人性化的一个命令,比od、xxd都强很多,所以也是常用的命令,如果你用不着这么全面的命令,可以用od,毕竟od字母少,打起来方便。