为什么Linux diff实用程序在内容相同时会生成输出?

问题描述:

我不知道为什么当我在我的工作站上运行diff程序。它给出了输出差异,而文件内容似乎对我来说是相同的。 这里是我的输出结果 但是当我用vimdiff打开文件。他们没有任何区别。任何人都知道原因? PS。我使用diff a.txt b.txt和vimdiff a.txt命令b.txt 感谢您的回答为什么Linux diff实用程序在内容相同时会生成输出?

+0

好吧..可能是因为内容不一样。你能向我们展示这些文件吗?输出?如果你执行'cp a.txt b.txt'然后执行diff,那么diff是否仍然会产生输出?使用十六进制编辑器(od)检查文件,他们真的是一样的吗? – Konerak 2012-03-06 08:40:26

+0

我在猜测情况或空白。请在Vim中提供':verbose set diffopt?'的输出。 – Johnsyweb 2012-03-06 09:38:46

我通常会发现它与行结尾有关。 DOS样式的文件具有CR/LF(回车和换行(a))行结束,而UNIX样式文件将只有LF

虽然他们可能看起来一样,他们不是。我会建议你做文件的十六进制转储,看看有什么实际的(但隐藏)的字符都是存在的,喜欢的东西:

od -xcb file | less 

与DOS样式行结尾的文件将在每个月底都\r \n线。 UNIX-stle将只有\n(b)


的(a)倒退到打字机天,当回车意味着字面上到滑架的左侧,和换行意味着通过一个线滚动纸滑动,而使打印头在同一在纸张上的位置。通常情况下,这些行动是合并的,但并非总是如此

(B)巨无霸式的文件,至少要等到他们意识到了这种诡计,并使用引擎盖下一个像样的操作系统开始,方才\rCR字符。