Примите во внимание следующее:
echo -n a > /tmp/a
echo -n b > /tmp/b
diff -B /tmp/a /tmp/b
Ясно, что эти два файла разные, но diff, похоже, считает, что файлы идентичны. Мне удалось воспроизвести эту проблему на Ubuntu 14.04 с diffutils 3.3, на CloudLinux 5.10 с diffutils 2.8.1, а также на Ubuntu 10.04 с diffutils 2.8.1.
Если я не использую параметр -B, проблема исчезнет. Если файлы заканчиваются новой строкой, проблема исчезает. Если файлы содержат более 1 символа, проблема исчезнет.
Я пробовал поискать в Интернете объяснение такого поведения, но безуспешно.
Может ли кто-нибудь объяснить, что происходит?
И какой простейший обходной путь я мог бы использовать для этого - для меня важно поведение -B.
По-моему, это жучок. Я пробовал это с Убунту 14.04. Продолжайте и сообщайте об ошибке.
С некоторыми режимами вывода (скрипт ed, бок о бок) даже -B работает, но не с другими.
jaba@jaba-ubuntu:~/diffbug$ diff -e -B a b
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 a b
a bjaba@jaba-ubuntu:~/diffbug$