diff
adalah utilitas baris perintah yang memungkinkan Anda membandingkan dua file baris demi baris. Itu juga dapat membandingkan isi direktori.
diff
perintah ini paling sering digunakan untuk membuat patch yang berisi perbedaan antara satu atau lebih file yang dapat diterapkan menggunakan patch
perintah.
Cara Menggunakan diff
Perintah #
Sintaks untuk diff
perintahnya adalah sebagai berikut:
diff [OPTION]... FILES
diff
perintah dapat menampilkan output dalam beberapa format dengan format normal, konteks, dan terpadu menjadi yang paling umum. Outputnya mencakup informasi tentang baris mana dalam file yang harus diubah sehingga menjadi identik. Jika file cocok, tidak ada output yang dihasilkan.
Untuk menyimpan output perintah ke file, gunakan operator pengalihan:
diff file1 file2 > patch
Dalam artikel ini, kami akan menggunakan dua file berikut untuk menjelaskan bagaimana diff
perintah berfungsi:
Ubuntu
Arch Linux
Debian
CentOS
Fedora
file2Kubuntu
Ubuntu
Debian
Arch Linux
Centos
Fedora
Format Normal #
Dalam bentuk paling sederhana ketika diff
perintah dijalankan pada dua file teks tanpa opsi apa pun, menghasilkan output dalam format normal:
diff file1 file2
Outputnya akan terlihat seperti ini:
0a1
> Kubuntu
2d2
< Arch Linux
4c4,5
< CentOS
---
> Arch Linux
> Centos
Format output normal terdiri dari satu atau lebih bagian yang menjelaskan perbedaan. Setiap bagian terlihat seperti ini:
change-command
< from-file-line...
---
> to-file-line...
0a1
, 2d2
dan 4c4,5
adalah mengubah perintah. Setiap perintah perubahan berisi yang berikut, dari kiri ke kanan:
- Nomor baris atau rentang baris dalam file pertama.
- Sebuah karakter perubahan khusus.
- Nomor baris atau rentang baris dalam file kedua.
Karakter perubahan dapat berupa salah satu dari berikut ini:
a
- Tambahkan garis.c
- Ubah barisnya.d
- Hapus garis.
Perintah ubah diikuti oleh baris lengkap yang dihapus (<
) dan ditambahkan ke file (>
).
Mari kita jelaskan hasilnya:
0a1
- Tambahkan baris1
dari file kedua di awal file1 (setelah baris0
).> Kubuntu
- Baris dari baris kedua yang ditambahkan ke file pertama seperti yang dijelaskan di atas.
2d2
- Hapus baris2
di berkas pertama.2
setelahd
simbol artinya jika baris tidak dihapus akan muncul di baris2
di file kedua.< Arch Linux
- baris yang dihapus.
4c4,5
- Ganti (ganti) baris5
di file pertama dengan baris4-5
dari file kedua.< CentOS
- Baris pada file pertama yang akan diganti.---
- Pemisah.> Arch Linux
dan> Centos
- Baris dari file kedua menggantikan baris di file pertama.
Format Konteks #
Ketika format output konteks digunakan, diff
perintah menampilkan beberapa baris konteks di sekitar baris yang berbeda antara file.
-c
opsi memberitahu diff
untuk menghasilkan keluaran dalam format konteks:
diff -c file1 file2
*** file1 2019-11-25 21:00:26.422426523 +0100
--- file2 2019-11-25 21:00:36.342231668 +0100
***************
*** 1,6 ****
Ubuntu
- Arch Linux
Debian
! CentOS
Fedora
--- 1,7 ----
+ Kubuntu
Ubuntu
Debian
! Arch Linux
! Centos
Fedora
Keluaran dimulai dengan nama dan stempel waktu jika file yang dibandingkan, dan satu atau beberapa bagian yang menjelaskan perbedaan. Setiap bagian terlihat seperti ini:
***************
*** from-file-line-numbers ****
from-file-line...
--- to-file-line-numbers ----
to-file-line...
from-file-line-numbers
danto-file-line-numbers
- Nomor baris atau rentang baris yang dipisahkan koma pada file pertama dan kedua.from-file-line
danto-file-line
- Garis yang berbeda dan garis konteks:- Baris yang dimulai dengan dua spasi adalah garis konteks, garis yang sama di kedua file.
- Garis yang dimulai dengan simbol minus (
-
) adalah baris yang tidak sesuai dengan apa pun di file kedua. Baris yang hilang di file kedua. - Garis yang dimulai dengan simbol plus (
+
) adalah baris yang tidak sesuai dengan apa pun di file pertama. Baris yang hilang di file pertama. - Baris yang dimulai dengan tanda seru (
!
) adalah baris yang diubah di antara dua file. Setiap kelompok baris dimulai dengan!
dari file pertama memiliki kecocokan yang sesuai di file kedua.
Mari kita jelaskan bagian terpenting dari output:
- Dalam contoh ini, kita hanya memiliki satu bagian yang menjelaskan perbedaannya.
*** 1,6 ****
dan--- 1,7 ----
memberitahu kita kisaran baris dari file pertama dan kedua yang disertakan dalam bagian ini.- Garis
Ubuntu
,Debian
,Fedora
, dan baris kosong terakhir sama di kedua file. Baris ini dimulai dengan spasi ganda. - Baris
- Arch Linux
dari file pertama tidak sesuai dengan apa pun di file kedua. Meskipun baris ini juga ada di file kedua, posisinya berbeda. - Baris
+ Kubuntu
dari file kedua tidak sesuai dengan apa pun di file pertama. - Baris
! CentOS
dari file dan baris pertama! Arch Linux
dan! CentOS
dari file kedua diubah antar file.
Secara default jumlah baris konteks default ke tiga. Untuk menentukan nomor lain gunakan -C
(--contexts
) pilihan:
diff -C 1 file1 file2
*** file1 2019-11-25 21:00:26.422426523 +0100
--- file2 2019-11-25 21:00:36.342231668 +0100
***************
*** 1,5 ****
Ubuntu
- Arch Linux
Debian
! CentOS
Fedora
--- 1,6 ----
+ Kubuntu
Ubuntu
Debian
! Arch Linux
! Centos
Fedora
Format Terpadu #
Format keluaran terpadu adalah versi yang disempurnakan dari format konteks dan menghasilkan keluaran yang lebih kecil.
Gunakan -u
opsi untuk memberi tahu diff
untuk mencetak output dalam format terpadu:
diff -u file1 file2
--- file1 2019-11-25 21:00:26.422426523 +0100
+++ file2 2019-11-25 21:00:36.342231668 +0100
@@ -1,6 +1,7 @@
+Kubuntu
Ubuntu
-Arch Linux
Debian
-CentOS
+Arch Linux
+Centos
Fedora
Keluarannya dimulai dengan nama dan stempel waktu file dan satu atau lebih bagian yang menjelaskan perbedaannya. Setiap bagian mengambil bentuk berikut:
***************
@@ from-file-line-numbers to-file-line-numbers @@
line-from-files...
@@ from-file-line-numbers to-file-line-numbers @@
- Nomor baris atau rentang baris dari file pertama dan kedua yang disertakan dalam bagian ini.line-from-files
- Garis yang berbeda dan garis konteks:- Baris yang dimulai dengan dua spasi adalah garis konteks, garis yang sama di kedua file.
- Garis yang dimulai dengan simbol minus (
-
) adalah baris yang dihapus dari file pertama. - Garis yang dimulai dengan simbol plus (
+
) adalah baris yang ditambahkan dari file pertama.
Abaikan kasus #
Seperti yang mungkin Anda perhatikan dalam contoh di atas, diff
perintah peka huruf besar/kecil secara default.
Gunakan -i
opsi untuk memberi tahu diff
untuk mengabaikan kasus:
diff -ui file1 file2
--- file1 2019-11-25 21:00:26.422426523 +0100
+++ file2 2019-11-25 21:00:36.342231668 +0100
@@ -1,6 +1,7 @@
+Kubuntu
Ubuntu
-Arch Linux
Debian
+Arch Linux
CentOS
Fedora
Kesimpulan #
Membandingkan file teks untuk perbedaan adalah salah satu tugas paling umum untuk administrator sistem Linux.
diff
perintah membandingkan file baris demi baris. Untuk informasi lebih lanjut, ketik man diff
di terminal Anda.
Jika Anda memiliki pertanyaan, silakan tinggalkan komentar di bawah.