$ cmp -s file1 file2
对于以下情况,上述命令不会返回任何内容:
- 情况1:两个文件(file1和file2)不同;
- 情况 2:两个文件(file1 和 file2)相同。
我尝试了以上所有情况,但我的unix系统不敏感。
答案1
-s
是为了沉默的,它是告诉cmp
不要输出任何内容,而只是在退出状态中反映文件是否相同,以便可以在if
shell 语句中使用:
if cmp -s file1 file2; then
echo same
else
echo differ or error
fi
或者:
cmp -s file1 file2 && rm file2
如果你想让它输出一些东西,删除-s
.然后,cmp
当文件不同时会输出一条消息,说明它们开始不同的位置。
¹ 除了一些在文件无法打开时显示错误消息的实现,而不是在文件不同时显示错误消息。
答案2
我对你的案例 1 有疑问。如果 cmp 没有返回任何内容,则文件可能相同。尝试diff file1 file
确认sum file1 file2
。差异是否可能在于不可打印的字符?