Saya suka @Alex Howansky telah menggunakan 'cmp --silent' untuk ini. Tapi saya membutuhkan tanggapan positif dan negatif, jadi saya menggunakan:
cmp --silent file1 file2 && echo '### SUCCESS: Files Are Identical! ###' || echo '### WARNING: Files Are Different! ###'
Saya kemudian dapat menjalankan ini di terminal atau dengan ssh untuk memeriksa file terhadap file konstanta.
Untuk dan aman dengan cepat bandingkan dua file apa pun:
if cmp --silent -- "$FILE1" "$FILE2"; then
echo "files contents are identical"
else
echo "files differ"
fi
Ini dapat dibaca, efisien, dan berfungsi untuk semua nama file termasuk "` $()
Saya percaya cmp
akan berhenti pada perbedaan byte pertama:
cmp --silent $old $new || echo "files are different"
Karena saya payah dan tidak memiliki poin reputasi yang cukup, saya tidak dapat menambahkan berita gembira ini sebagai komentar.
Tapi, jika Anda akan menggunakan cmp
perintah (dan tidak perlu/ingin bertele-tele) Anda cukup mengambil status keluar. Per cmp
halaman manual:
Jika FILE '-' atau hilang, baca input standar. Status keluar adalah 0jika masukannya sama, 1 jika berbeda, 2 jika bermasalah.
Jadi, Anda dapat melakukan sesuatu seperti:
STATUS="$(cmp --silent $FILE1 $FILE2; echo $?)" # "$?" gives exit status for each comparison
if [[ $STATUS -ne 0 ]]; then # if status isn't equal to 0, then execute code
DO A COMMAND ON $FILE1
else
DO SOMETHING ELSE
fi
EDIT:Terima kasih atas komentarnya semuanya! Saya memperbarui sintaks pengujian di sini. Namun, saya menyarankan Anda menggunakan jawaban Vasili jika Anda mencari sesuatu yang mirip dengan jawaban ini dalam keterbacaan, gaya, dan sintaksis.