错误的差异:单字符文件没有换行输出错误

考虑一下:

echo -na > /tmp/a echo -nb > /tmp/b diff -B /tmp/a /tmp/b 

显然,这两个文件是不同的,但差异似乎认为这些文件是相同的。 我已经设法在Ubuntu 14.04上使用diffutils 3.3,在使用diffutils 2.8.1的CloudLinux 5.10以及使用diffutils 2.8.1的Ubuntu 10.04上重现这个问题。

如果我不使用-B选项,问题就会消失。 如果文件以换行符结束,问题就会消失。 如果文件包含多个字符,问题就会消失。

我试过在网上search这种行为的解释,但一直没有成功。

有人可以解释发生了什么事吗?

而且,我可以使用什么最简单的解决方法–B行为对我来说很重要。

听起来像一个错误给我。 我在Ubuntu 14.04上试了这个。 继续并报告错误。

有些输出模式(ed脚本,并排)甚至-B工作,但不与其他人。

 jaba@jaba-ubuntu:~/diffbug$ diff -e -B ab 1c b . diff: a: No newline at end of file diff: b: No newline at end of file jaba@jaba-ubuntu:~/diffbug$ diff -y -B ab a bjaba@jaba-ubuntu:~/diffbug$