[个人原创]Linux vim 查看16进制之:%!xxd,XXd hexdump 查看16进制的方法,配合vi使用更棒

jackxiang 2010-10-20 11:23 | |
[~/shell]# xxd -g 1 concat.sh

-g 1,2:1和2的区别就是:1 2分别是:66  6669  明白了吧,呵呵!
主要用途:可以用来查看PHP在windows下的utf8记事本编码的bom,会导致session,cookie,输出图片出现异常的bom,大名鼎鼎啊,ef bb bf 就是utf-8 bom,如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
如,注意efbb这个就是bom啦:

[~/shell]# hexdump bom.txt -C        

00000000  ef bb bf 64 66 64 66 64  0a                       |...dfdfd.|

---------------------------------------------------------------------------------------------------------------------------------------------

[~/shell]# xxd -g 2 bom.txt        

0000000: efbb bf64 6664 6664 0a                   ...dfdfd.
---------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------

vi在linux下查看16进制文件的方法。
xxd
Creates a hex dump of the given file; it can also do the
reverse, so it can be used for binary patching
用法很简单:
在vi的命令状态下
:%!xxd               ——将当前文本转换为16进制格式。(实践OK,但在windows下还是wxHexEditor界面打开好用)
:%!xxd -r            ——将当前文件转换回文本格式。
于是乎:
将当前文本转换为16进制格式,Vi命令行模式,输入:
:%!xxd

将当前文件转换回文本格式,Vi命令行模式,输入:
:%!xxd -r

哈哈,就在这一转16进制后又转回来的时候,你就发现bom,露出了原型,0000000: efbb bfef bbbf 6466 6466 640a            ......dfdfd.到转回来后出现<feff>dfdfd,哈哈哈哈,原形毕露了吧!
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||


[~/shell]# xxd -g 1 test.sh  
0000000: 66 69 6c 65 6e 61 6d 65 3d 24 31 0a 73 74 72 69  filename=$1.stri
0000010: 6e 67 31 3d 65 78 69 73 74 0a 73 74 72 69 6e 67  ng1=exist.string
0000020: 32 3d 78 69 0a 63 6f 6d 6d 61 6e 64 3d 22 63 61  2=xi.command="ca
0000030: 74 20 24 66 69 6c 65 6e 61 6d 65 20 7c 20 67 72  t $filename | gr
0000040: 65 70 20 24 73 74 72 69 6e 67 31 20 7c 20 67 72  ep $string1 | gr
0000050: 65 70 20 24 73 74 72 69 6e 67 32 22 0a 65 76 61  ep $string2".eva
0000060: 6c 20 24 63 6f 6d 6d 61 6e 64 0a                 l $command.

---------------------------------------------------------------------------------------------------------------------------------------------
[~/shell]# xxd -g 2 test.sh  

0000000: 6669 6c65 6e61 6d65 3d24 310a 7374 7269  filename=$1.stri
0000010: 6e67 313d 6578 6973 740a 7374 7269 6e67  ng1=exist.string
0000020: 323d 7869 0a63 6f6d 6d61 6e64 3d22 6361  2=xi.command="ca
0000030: 7420 2466 696c 656e 616d 6520 7c20 6772  t $filename | gr
0000040: 6570 2024 7374 7269 6e67 3120 7c20 6772  ep $string1 | gr
0000050: 6570 2024 7374 7269 6e67 3222 0a65 7661  ep $string2".eva
0000060: 6c20 2463 6f6d 6d61 6e64 0a              l $command.

---------------------------------------------------------------------------------------------------------------------------------------------
当然你也可以这样:
[~/shell]# hexdump test.sh -C            

00000000  66 69 6c 65 6e 61 6d 65  3d 24 31 0a 73 74 72 69  |filename=$1.stri|
00000010  6e 67 31 3d 65 78 69 73  74 0a 73 74 72 69 6e 67  |ng1=exist.string|
00000020  32 3d 78 69 0a 63 6f 6d  6d 61 6e 64 3d 22 63 61  |2=xi.command="ca|
00000030  74 20 24 66 69 6c 65 6e  61 6d 65 20 7c 20 67 72  |t $filename | gr|
00000040  65 70 20 24 73 74 72 69  6e 67 31 20 7c 20 67 72  |ep $string1 | gr|
00000050  65 70 20 24 73 74 72 69  6e 67 32 22 0a 65 76 61  |ep $string2".eva|
00000060  6c 20 24 63 6f 6d 6d 61  6e 64 0a                 |l $command.|
0000006b

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/3654/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2019-11-5 23:40
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]