Pendahuluan
Linux diff
perintah digunakan untuk membandingkan dua file baris demi baris dan menampilkan perbedaan di antara mereka. Utilitas baris perintah ini mencantumkan perubahan yang perlu Anda terapkan untuk membuat file menjadi identik.
Baca terus untuk mempelajari lebih lanjut tentang diff
perintah dan opsinya dengan contoh yang mudah diikuti.
Sintaks diff
Sintaks untuk menggunakan diff
perintahnya adalah:
diff [option] file1 file2
Sintaks Keluaran
Saat bekerja dengan diff
, sangat penting untuk mengetahui bagaimana menginterpretasikan output, yang terdiri dari:
- Keluaran dimulai dengan
<
mengacu pada konten dalam file pertama. - Keluaran dimulai dengan
>
mengacu pada konten dalam file kedua. - Nomor baris yang sesuai dengan file pertama.
- Simbol khusus. Simbol khusus menunjukkan bagaimana file pertama perlu diedit agar sesuai dengan file kedua. Outputnya mungkin menampilkan:
a
(tambahkan)c
(ubah)d
(hapus)
- Nomor baris yang sesuai dengan file kedua.
Contoh perbedaan
Untuk menunjukkan bagaimana diff
perintah berfungsi, kami membuat dua file sampel dan membandingkan kontennya.
Buat Dua File Contoh
1. Pertama, menggunakan terminal, buat file Linux bernama example1.txt . Kami menggunakan editor teks Nano, tetapi Anda dapat menggunakan editor teks pilihan Anda.
sudo nano example1.txt
2. Setelah editor teks membuat dan membuka file, tambahkan baris berikut ke dalamnya:
Apple
Orange
Banana
Watermelon
Chery
3. Simpan dan keluar dari file – tahan Ctrl + X dan konfirmasi dengan menekan Y .
4. Selanjutnya, buat example2.txt file dengan menjalankan:
sudo nano example2.txt
5. Tambahkan konten berikut ke file:
Orange
Peach
Apple
Banana
Melon
Cherry
6. Simpan perubahan dan keluar.
Bandingkan File dengan Perintah diff
1. Dengan dua file contoh di tempat, gunakan diff
perintah untuk melihat perbedaannya dan cara membuatnya identik:
diff example1.txt example2.txt
Outputnya mencantumkan instruksi tentang cara memodifikasi file pertama agar memiliki konten yang sama seperti di example2.txt . Mari kita lihat output untuk file sampel dan decode instruksinya.
1d0
– Baris pertama (1
) dari file pertama harus dihapus (d
). Jika tidak, itu akan muncul di baris0
di file kedua.< Apple
–Konten yang perlu Anda hapus (sebagaimana dimaksud dengan1d0
).2a2,3
– Sebaris2
dari file pertama, Anda harus menambahkan (a
) baris2
dan3
(2,3
) dari file kedua.> Peach
,> Apple
– Konten yang perlu Anda tambahkan (sebagaimana dimaksud dengan2a2,3
).4c5
– Baris keempat (4
) dari file pertama harus diubah (c
) hingga baris kelima (5
) dari file kedua.< Watermelon
– Konten yang perlu Anda ubah.> Melon
– Anda perlu mengubahnya menjadi apa.
Opsi perbedaan
Tanpa opsi tambahan, diff
menampilkan output dalam format default. Ada beberapa cara untuk memodifikasi keluaran ini agar lebih mudah dipahami atau berlaku untuk kasus penggunaan Anda. Baca terus untuk mempelajari lebih lanjut tentang diff
opsi perintah.
-c Opsi
Format konteksnya adalah diff
opsi utilitas baris perintah yang menampilkan beberapa baris konteks di sekitar baris yang berbeda.
Untuk menampilkan perbedaan antar file dalam bentuk konteks, gunakan perintah:
diff -c file1 file2
Lihatlah output untuk file sampel dalam bentuk konteks pada gambar di bawah ini.
Baris yang menampilkan informasi tentang file pertama dimulai dengan ***
, sedangkan baris yang menunjukkan file kedua dimulai dengan ---
.
Dua baris pertama menampilkan nama dan stempel waktu kedua file:
*** example1.txt 2021-12-27 10:53:30.700640904 +0100
--- example2.txt 2021-12-27 10:54:41.304939358 +0100
****************
- digunakan hanya sebagai pemisah.
Sebelum membuat daftar baris dari setiap file, output dimulai dengan rentang baris file:
*** 1,5 ****
--- 1,6 ----
Baris lainnya mencantumkan konten file. Awal setiap baris menginstruksikan cara memodifikasi example1.txt untuk membuatnya sama dengan example2.txt . Jika baris dimulai dengan:
-
(minus) – perlu dihapus dari file pertama.
+
(plus) – perlu ditambahkan ke file pertama.
!
(tanda seru) – perlu diubah ke baris yang sesuai dari file kedua.
Jika tidak ada simbol, garisnya tetap sama.
Oleh karena itu, pada contoh di atas, Anda harus menghapus Apple
dari baris pertama, ganti Watermelon
dengan Melon
di baris empat, dan tambahkan Peach
dan Apple
ke baris dua dan tiga.
-u Opsi
Format terpadu adalah opsi yang dapat Anda tambahkan untuk menampilkan output tanpa baris konteks yang berlebihan. Untuk melakukannya, gunakan perintah:
diff -u file1 file2
Sekarang, mari kita periksa output untuk file sampel dalam format terpadu:
Baris yang menampilkan informasi tentang file pertama dimulai dengan ---
, sedangkan baris yang menunjukkan file kedua dimulai dengan +++
.
Dua baris pertama menampilkan nama dan stempel waktu kedua file:
*** example1.txt 2021-12-27 10:53:30.700640904 +0100
--- example2.txt 2021-12-27 10:54:41.304939358 +0100
@@ -1,5 +1,6 @@
- menunjukkan rentang baris untuk kedua file.
Baris di bawah ini menampilkan konten file dan cara memodifikasi example1.txt untuk membuatnya identik dengan example2.txt . Saat baris dimulai dengan:
-
(minus) – perlu dihapus dari file pertama.
+
(plus) – perlu ditambahkan ke file pertama.
Jika tidak ada simbol, garisnya tetap sama.
Pada contoh di atas, output menginstruksikan bahwa Apple
dan Watermelon
harus dihapus, sedangkan Peach
, Apple
, dan Melon
harus ditambahkan.
-i Opsi
Secara default, diff
peka huruf besar/kecil. Jika Anda ingin mengabaikan huruf besar-kecil, tambahkan -i
pilihan pada perintah:
diff -i file1 file2
Misalnya, jika kita membuat satu file dengan baris berikut:
Apple
Orange
Banana
Watermelon
Cherry
Dan file lain dengan konten:
Apple
orange
Banana
watermelon
Cherry
Keluaran tanpa opsi tambahan menunjukkan ada perbedaan antara file dan memberikan instruksi cara memodifikasinya.
Namun, jika Anda menambahkan -i
opsi, tidak ada output karena perintah tidak mendeteksi perbedaan apa pun.
--opsi versi
Untuk memeriksa versi diff
berjalan di sistem Anda, jalankan perintah:
diff --version
--opsi bantuan
Untuk menampilkan ringkasan diff
penggunaan berjalan:
diff --help
Opsi perbedaan lainnya
Opsi lain yang diff
dukungan meliputi:
-a / --text | Melihat file sebagai teks dan membandingkannya baris demi baris. |
-b / --ignore-space-change | Abaikan spasi putih saat membandingkan file. |
-B / --ignore-blank-lines | Abaikan baris kosong saat membandingkan file. |
--binary | Bandingkan dan tulis data dalam mode biner. |
-d --minimal | Ubah algoritme (misalnya, untuk menemukan kumpulan perubahan yang lebih kecil). |
-e / --ed | Jadikan keluaran sebagai ed yang valid naskah. |
-E / --ignore-tab-expansion | Abaikan ekstensi tab saat membandingkan file. |
-l / --paginate | Jalankan output melalui pr untuk membuat halamannya. |
-N / --new-file | Perlakukan file yang hilang sebagai ada tapi kosong. |
-q / --brief | Menampilkan apakah file berbeda tanpa menentukan detailnya. |
-s / --report-identical-files | Hasilkan jika filenya sama. |
-w / --ignore-all-space | Abaikan spasi saat membandingkan file. |