使用diff命令

时间:2012-09-03 02:38:22

标签: unix

所以我试图将我用gcc编译时生成的二进制文件与提供的示例可执行文件进行比较。所以我使用命令diff并像这样

diff asgn2 sample-asgn2 二进制文件asgn2和sample-asgn2不同

有什么方法可以看出它们有何区别?而不只是显示不同。

4 个答案:

答案 0 :(得分:1)

你为什么不试试Vbindiff?它可能会做你想要的:

  

Visual Binary Diff(VBinDiff)以十六进制和ASCII(或EBCDIC)显示文件。它还可以同时显示两个文件,并突出显示它们之间的差异。与diff不同,它适用于大文件(最大4 GB)。

Vbindiff的位置取决于您使用的操作系统。如果是Ubuntu或其他Debian派生词,apt-get install vbindiff

答案 1 :(得分:1)

使用hexdump对两个二进制文件进行十六进制转储。然后你可以使用你喜欢的衍生工具比较十六进制转储,比如kdiff3,tkdiff,xxdiff等。

答案 2 :(得分:0)

我正在使用Linux,在我的情况下,我需要一个-q选项来显示你得到的东西。

diff -q file1 file2

如果没有-q选项,它将显示哪条线不同并显示该行。

您可以查看man diff以查看在UNIX中使用的正确选项。

答案 3 :(得分:0)

vbindiff仅进行字节比较。如果只有一个字节的添加/删除,它将标记所有后续字节已更改...

另一种方法是将二进制文件转换为文本文件,以便可以将它们与文本差异算法进行比较。

colorbindiff.pl是一个简单的开源perl脚本,使用此方法并显示彩色的并排比较,就像在文本差异中一样。它突出显示字节更改/添加/删除。在GitHub上可用。

colorbindiff output snapshot