Linux
差異中的錯誤:沒有換行符的單字元文件輸出錯誤
考慮一下:
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$