GNU/Linux >> Belajar Linux >  >> Linux

9 Contoh Perintah diff di Linux

Perintah diff di linux digunakan untuk membandingkan isi dari dua file baris demi baris dan jika ditemukan perbedaan maka juga akan mencantumkan perbedaan beserta nomor barisnya. Perintah Diff juga dapat digunakan untuk membandingkan isi dari dua direktori.

Perintah Diff memainkan peran penting dalam skrip shell di mana kita ingin menjalankan perintah berdasarkan perbedaan dua file.

sintaks perintah diff

$ diff file1 file2

Output dari perintah diff dapat dalam format berikut:

  • Normal (bawaan)
  • Konteks
  • Bersatu

Simbol berbeda dari keluaran perintah diff:

  • a -> ini menunjukkan bahwa sesuatu telah ditambahkan
  • c -> ini menunjukkan bahwa beberapa teks telah diubah
  • d -> ini menunjukkan beberapa teks telah dihapus

Secara default, perintah diff menampilkan output dalam format normal, artinya jika isi dari dua file identik maka tidak akan menghasilkan output apapun tetapi kita akan mendapatkan prompt.

Dalam posting ini, kita akan membahas perintah diff dengan contoh praktis.

1) Bandingkan dua file dengan perintah diff

Mari kita asumsikan kita memiliki dua file aachen.txt dan sydney.txt dan berikut adalah isi dari file-file tersebut,

[[email protected] ~]# cat aachen.txt
Linux Rocks in the open source world, followings are the linux distributions:
CentOS
Red Hat
Ubuntu Debian
Linux Mint
OpenSUSE
Fedora
[[email protected] ~]# cat sydney.txt
Linux Rocks in the open source world, followings are the linux distributions:
CentOS
Red Hat
Ubuntu Debian
Linux Mint
OpenSUSE
Fedora
[[email protected] ~]#

Mari kita bandingkan isi dari file-file ini menggunakan perintah diff,

[[email protected] ~]# diff aachen.txt sydney.txt
[[email protected] ~]#

Output di atas menegaskan bahwa kedua file itu identik. Mari kita buat beberapa perubahan di aachen.txt, tulis ulang open source sebagai “open-source”.

Sekarang jalankan kembali perintah diff,

[[email protected] ~]# diff aachen.txt sydney.txt

Keluaran,

Pada keluaran, 1c1 menunjukkan bahwa baris pertama dari file pertama perlu diubah untuk membuat kedua file identik.

Mari kita putar kembali perubahan di atas dan tambahkan baris baru “Arch Linux ” di sydeny.txt di akhir file dan jalankan kembali perintah diff,

Output dari perintah diff “7a8 ” menunjukkan bahwa setelah baris ke-7 di file pertama, kita perlu menambahkan baris lain untuk mencocokkan baris ke-8 dari file kedua.

Mari kita hapus “Arch Linux” dan “Fedora” dari sydney.txt lalu coba bandingkan file-file ini,

Output dari perintah diff “7d6 ” menunjukkan bahwa kita perlu menghapus baris ke-7 pada file pertama untuk menyinkronkan dengan file kedua pada baris nomor 6.

2) Keluaran perintah Diff dalam format konteks (-c)

Gunakan opsi '-c' dalam perintah diff untuk menghasilkan output perintah diff dalam format konteks. Contoh ditunjukkan di bawah ini,

[[email protected] ~]# diff -c aachen.txt sydney.txt

Dua baris pertama mewakili nama file beserta tanggal dan waktu modifikasinya dan tiga simbol asterisk (“*** “) menunjukkan file pertama dan tiga simbol tanda hubung (“ “) menunjukkan file kedua.

Hanya tanda hubung tunggal "-" yang menunjukkan bahwa baris perlu dihapus dan simbol plus "+" menunjukkan bahwa baris perlu ditambahkan dalam file. Jika ada baris yang tidak memerlukan perubahan apa pun maka diawali dengan dua spasi.

3) Keluaran perintah Diff dalam format terpadu (-u)

Gunakan opsi '-u' pada perintah diff jika Anda ingin menghasilkan output dalam format terpadu, contoh diilustrasikan di bawah ini,

[[email protected] ~]# diff -u aachen.txt sydney.txt

Output di atas agak mirip dengan format konteks tetapi format terpadu menampilkan output secara ringkas, di sini dua baris pertama menunjukkan nama file beserta tanggal dan waktu modifikasinya..

Tiga tanda hubung (“—“) mewakili file pertama dan tiga simbol plus (“+++”) mewakili file kedua, setelah dua tanda @ “-1,7” menunjukkan baris dari file pertama dan “+1,7” mewakili baris berkisar dari file ke-2. Plus, simbol (+Core OS) menunjukkan bahwa baris ini perlu ditambahkan di file pertama dan simbol tanda hubung (-Fedora) menunjukkan bahwa baris ini perlu dihapus dari file pertama agar identik dengan file kedua.

4) Abaikan peka huruf besar/kecil saat membandingkan  file (-i)

Secara default, perintah diff peka huruf besar/kecil dan jika Anda ingin mengabaikan peka huruf besar/kecil dalam perintah diff maka gunakan opsi ‘-i‘, contoh ditunjukkan di bawah ini,

Mari kita asumsikan kita memiliki konten dua file berikut

Jalankan perintah diff tanpa opsi apa pun,

[[email protected] ~]# diff aachen.txt sydney.txt
5,6c5,6
< Ubuntu debian
< Linux mint
---
> Ubuntu Debian
> Linux Mint
[[email protected] ~]#

Sekarang jalankan perintah diff dengan opsi -i,

[[email protected] ~]# diff -i aachen.txt sydney.txt
[[email protected] ~]#

Seperti yang dapat kita lihat pada output di atas, perintah diff telah mengabaikan fitur case sensitive ketika kita menggunakan opsi -i.

5) File laporan identik dengan perintah diff (-s)

Ada beberapa situasi di mana kita membandingkan file menggunakan perintah diff dan jika kontennya identik maka kita ingin menampilkan pesan bahwa file tersebut identik, ini dapat dilakukan dengan melewatkan opsi '-s' pada perintah diff,

[[email protected] ~]# cat filex.txt
DevOPs Engineer
Cloud Stack Engineer
Linux System Admin
Monitoring Team
[[email protected] ~]# cat filey.txt
DevOPs Engineer
Cloud Stack Engineer
Linux System Admin
Monitoring Team
[[email protected] ~]# diff -s filex.txt filey.txt
Files filex.txt and filey.txt are identical
[[email protected] ~]#

6) Abaikan spasi saat membandingkan file dengan diff  (-b)

Mari kita asumsikan kita memiliki dua file filea.txt dan fileb.txt di mana spasi putih tidak konsisten, jadi jika kita menggunakan perintah diff tanpa opsi apa pun, itu akan menunjukkan perbedaan spasi putih meskipun isinya identik, jadi dalam kasus seperti itu kita dapat mengabaikan spasi putih yang tidak konsisten dalam perintah diff dengan menggunakan opsi -b , contoh ditunjukkan di bawah ini,

[[email protected] ~]# cat filea.txt
Hi,  LinuxTechi is a Linux based  blog. It contains linux  HowTo's  and  Tips  &  Tricks.
[[email protected] ~]# cat fileb.txt
Hi, LinuxTechi is a Linux based blog. It contains linux HowTo's and Tips & Tricks.
[[email protected] ~]#

Bandingkan file tanpa opsi apa pun dengan perintah diff,

[[email protected] ~]# diff filea.txt fileb.txt
1c1
< Hi,  LinuxTechi is a Linux based  blog. It contains linux  HowTo's  and  Tips  &  Tricks.
---
> Hi, LinuxTechi is a Linux based blog. It contains linux HowTo's and Tips & Tricks.
[[email protected] ~]#

Sekarang gunakan opsi -b pada perintah diff di atas

[[email protected] ~]# diff -b filea.txt fileb.txt
[[email protected] ~]#

Jika Anda ingin mengabaikan semua spasi putih selama perbandingan menggunakan perintah diff, gunakan “-w ” pilihan

[[email protected] ~]# diff -w filea.txt fileb.txt

7) Abaikan Spasi putih di akhir baris selama perbandingan (-Z)

Jika Anda ingin Mengabaikan ruang percobaan di akhir baris selama perbandingan, gunakan “-Z ” pilihan

[[email protected] ~]# diff -Z filea.txt fileb.txt

Gunakan “-B ” dalam perintah diff untuk mengabaikan semua baris kosong selama perbandingan,

[[email protected] ~]# diff -B filea.txt fileb.txt

8) Bandingkan dua direktori

Mari kita asumsikan kita memiliki dua direktori dengan nama lab01 dan lab02, ini memiliki file dan sub-direktori berikut

[[email protected] ~]# ls -l lab01/
total 0
-rw-r--r--. 1 root root  0 Feb  1 17:49 filea.txt
-rw-r--r--. 1 root root  0 Feb  1 17:49 fileb.txt
-rw-r--r--. 1 root root  0 Feb  1 17:49 filec.txt
-rw-r--r--. 1 root root  0 Feb  1 17:49 filed.txt
drwxr-xr-x. 2 root root 23 Feb  1 17:50 sitea
[[email protected] ~]# ls -l lab02/
total 0
-rw-r--r--. 1 root root  0 Feb  1 17:49 filea.txt
-rw-r--r--. 1 root root  0 Feb  1 17:49 fileb.txt
-rw-r--r--. 1 root root  0 Feb  1 17:49 filec.txt
-rw-r--r--. 1 root root  0 Feb  1 17:49 filed.txt
drwxr-xr-x. 2 root root 23 Feb  1 17:50 sitea
[[email protected] ~]#

Mari kita bandingkan kedua direktori ini menggunakan perintah diff di bawah ini,

[[email protected] ~]# diff -qr lab01/ lab02/
[[email protected] ~]#

Dimana:

  • -q -> itu menginstruksikan perintah diff untuk melaporkan hanya ketika file berbeda
  • -r -> itu menginstruksikan perintah diff untuk mencari perbedaan dalam sub-direktori secara rekursif

Saat kami mendapatkan output kosong, itu berarti kedua direktori itu identik. Mari kita hapus filed.txt dari lab02 lalu coba bandingkan,

[[email protected] ~]# cd lab02/
[[email protected] lab02]# rm -f filed.txt
[[email protected] lab02]# cd
[[email protected] ~]# diff -qr lab01/ lab02/
Only in lab01/: filed.txt
[[email protected] ~]#

Output di atas mengatakan bahwa filed.txt hanya ada di direktori lab01

9) Mengarahkan output perintah diff ke file

Output perintah Diff dapat diarahkan ke file dengan menggunakan simbol ">". Ini menjadi sangat berguna dalam skrip shell di mana kita ingin melakukan tugas hanya jika output dari perintah diff mengandung perbedaan.

[[email protected] ~]# diff aachen.txt sydney.txt
9,10d8
< SLES
< Puppy Linux
[[email protected] ~]# diff aachen.txt sydney.txt  > diff.txt
[[email protected] ~]# cat diff.txt
9,10d8
< SLES
< Puppy Linux
[[email protected] ~]#

Contoh tambahan

Bandingkan dua file di terminal berdampingan

Ketika kita menggunakan opsi '-y' saat membandingkan dua file menggunakan perintah diff maka itu menunjukkan kedua file di terminal secara berdampingan.

[[email protected] ~]# diff -y /etc/fstab /tmp/fstab

keluaran

Output di atas dengan jelas menunjukkan perbedaan dua file.

Itu saja dari artikel ini, saya harap sekarang Anda memiliki pemahaman yang lebih baik tentang perintah diff dengan melalui contoh di atas. Jangan ragu untuk memberikan masukan dan komentar Anda.

Baca Juga :16 Contoh Perintah Echo di Linux

Baca Juga8 Contoh Perintah Kepala di Linux


Linux
  1. 7 Contoh Perintah Linux df

  2. Contoh Perintah rm di Linux

  3. Contoh Perintah ps di Linux

  1. 8 Contoh Perintah Linux TR

  2. sa Contoh Perintah di Linux

  3. w Contoh Perintah di Linux

  1. Contoh Perintah ac di Linux

  2. Contoh Perintah df di Linux

  3. du Contoh Perintah di Linux