GNU/Linux >> Belajar Linux >  >> Linux

Perintah Diff di Linux

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:

file1
Ubuntu
Arch Linux
Debian
CentOS
Fedora
file2
Kubuntu
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 baris 1 dari file kedua di awal file1 (setelah baris 0 ).
    • > Kubuntu - Baris dari baris kedua yang ditambahkan ke file pertama seperti yang dijelaskan di atas.
  • 2d2 - Hapus baris 2 di berkas pertama. 2 setelah d simbol artinya jika baris tidak dihapus akan muncul di baris 2 di file kedua.
    • < Arch Linux - baris yang dihapus.
  • 4c4,5 - Ganti (ganti) baris 5 di file pertama dengan baris 4-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 dan to-file-line-numbers - Nomor baris atau rentang baris yang dipisahkan koma pada file pertama dan kedua.
  • from-file-line dan to-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.


Linux
  1. 8 tips untuk baris perintah Linux

  2. Miliki sapi di baris perintah Linux

  3. Masukkan diri Anda ke dalam baris perintah Linux

  1. Perintah mv Linux

  2. Linux du perintah

  3. Perintah ip Linux

  1. 9 Contoh Perintah diff di Linux

  2. Perintah cd Linux

  3. Contoh Perintah diff di Linux