我正在使用 diff 命令来比较两个文本文件。他们需要从字面上匹配。
所以我使用差异:
diff binary.out binary.expected
(顺便说一下,这些文件不是二进制文件。它们是文本文件。我称它们为二进制,因为这是项目的名称)
并得到
Binary files binary.out and binary.expected differ
当我使用另一个差异工具时,最聪明的(又名人类),这两个文件之间真的没有什么不同。
有谁碰巧知道这里发生了什么?
谢谢。
diff
来自diffutils的关于文本/二进制的内容如下:
diff
通过检查文件中的前几个字节来确定文件是文本还是二进制文件;确切的字节数取决于系统,但通常为数千。如果文件该部分中的每个字节都不为空,则diff
认为该文件是文本;否则它认为该文件是二进制文件。
因此 GNU diff 对什么是文本有一个非常开放的定义,并且--text
很少需要使用该选项来强制它将文件视为文本。
您是否检查过是否binary.out
或binary.expected
包含空字符?你的差异程序是什么版本?
确保忽略差异选项中的空白。
它还可以看到 Unicode 字符并将其解释为二进制。查看您的差异工具是否有强制文本模式的选项。