Linux

差異中的錯誤:沒有換行符的單字元文件輸出錯誤

  • September 3, 2014

考慮一下:

echo -n a > /tmp/a
echo -n b > /tmp/b
diff -B /tmp/a /tmp/b

顯然,這兩個文件是不同的,然而,diff 似乎認為文件是相同的。我已經設法在帶有 diffutils 3.3 的 Ubuntu 14.04、帶有 diffutils 2.8.1 的 CloudLinux 5.10 以及帶有 diffutils 2.8.1 的 Ubuntu 10.04 上重現了這個問題。

如果我不使用 -B 選項,問題就會消失。如果文件確實以換行符結尾,問題就會消失。如果文件包含超過 1 個字元,問題就會消失。

我嘗試在網上搜尋此行為的解釋,但沒有成功。

有人可以解釋發生了什麼嗎?

而且,我可以為此使用的最簡單的解決方法是什麼 - -B 行為對我來說很重要。

對我來說聽起來像是一個錯誤。我在 Ubuntu 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$ 

引用自:https://serverfault.com/questions/625900