Android

Perintah diff di linux

Linux Terminal 201: ifconfig vs ip - HakTip 154

Linux Terminal 201: ifconfig vs ip - HakTip 154

Daftar Isi:

Anonim

diff adalah utilitas baris perintah yang memungkinkan Anda untuk membandingkan dua file baris demi baris. Itu juga dapat membandingkan isi direktori.

Perintah diff paling umum digunakan untuk membuat tambalan yang berisi perbedaan antara satu atau lebih file yang dapat diterapkan menggunakan perintah patch .

Cara Menggunakan Perintah diff

Sintaks untuk perintah diff adalah sebagai berikut:

diff… FILES

Perintah diff dapat menampilkan output dalam beberapa format dengan format normal, konteks, dan terpadu menjadi yang paling umum. Keluaran 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 redirection:

diff file1 file2 > patch

, kami akan menggunakan dua file berikut untuk menjelaskan cara kerja perintah diff :

file1

Ubuntu Arch Linux Debian CentOS Fedora file2

Kubuntu Ubuntu Debian Arch Linux Centos Fedora

Format Normal

Dalam bentuknya yang paling sederhana ketika perintah diff dijalankan pada dua file teks tanpa opsi apa pun, itu 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 menggambarkan perbedaan. Setiap bagian terlihat seperti ini:

change-command < from-file-line… --- > to-file-line…

0a1 , 2d2 dan 4c4, 5 adalah perintah perubahan. Setiap perintah perubahan berisi yang berikut ini, dari kiri ke kanan:

  • Nomor baris atau rentang baris dalam file pertama. Karakter perubahan khusus. Nomor baris atau rentang baris dalam file kedua.

Karakter perubahan dapat berupa salah satu dari yang berikut:

  • a - Tambahkan baris. c - Ubah garis. d - Hapus garis.

Perintah perubahan 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 dijelaskan di atas.
    2d2 - Hapus baris 2 di file pertama. 2 setelah simbol d berarti bahwa jika baris tidak dihapus akan muncul pada baris 2 di file kedua.
    • < Arch Linux - baris yang dihapus.
    4c4, 5 - Ganti (ubah) baris 5 pada file pertama dengan baris 4-5 dari file kedua.
    • < CentOS - Baris di 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, perintah diff menampilkan beberapa baris konteks di sekitar baris yang berbeda antara file.

Opsi -c memberitahu diff untuk menghasilkan output 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

Output dimulai dengan nama dan cap waktu jika file yang dibandingkan, dan satu atau lebih bagian yang menggambarkan 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 di file pertama dan kedua, secara berurutan. 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. Baris yang dimulai dengan simbol minus ( - ) adalah garis yang tidak berhubungan dengan apa pun di file kedua. Baris yang hilang di file kedua. Baris yang dimulai dengan simbol plus ( + ) adalah garis yang tidak sesuai dengan apa pun di file pertama. Baris yang hilang pada file pertama. Baris yang dimulai dengan tanda seru ( ! ) Adalah garis yang diubah antara dua file. Setiap kelompok garis dimulai dengan ! dari file pertama memiliki kecocokan yang sesuai di file kedua.

Mari kita jelaskan bagian terpenting dari output:

  • Dalam contoh ini kami hanya memiliki satu bagian yang menjelaskan perbedaan. *** 1, 6 **** dan --- 1, 7 ---- memberi tahu kita kisaran garis dari file pertama dan kedua yang termasuk dalam bagian ini. Baris Ubuntu , Debian , Fedora , dan baris kosong terakhir sama di kedua file. Baris-baris ini dimulai dengan spasi ganda. Baris - Arch Linux dari file pertama tidak ada hubungannya dengan file kedua. Meskipun baris ini juga ada di file kedua, posisinya berbeda. Baris + Kubuntu dari file kedua tidak ada artinya di file pertama. Baris ! CentOS ! CentOS dari file dan baris pertama ! Arch Linux ! Arch Linux dan ! CentOS ! CentOS dari file kedua diubah antar file.

Secara default jumlah baris konteks default menjadi tiga. Untuk menentukan nomor lain gunakan opsi -C ( --contexts ):

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 output terpadu adalah versi perbaikan dari format konteks dan menghasilkan output yang lebih kecil.

Gunakan opsi -u untuk membedakan 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

Output dimulai dengan nama dan cap waktu file dan satu atau lebih bagian yang menggambarkan perbedaan. 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 termasuk 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. Baris yang dimulai dengan simbol minus ( - ) adalah garis yang dihapus dari file pertama. Baris yang dimulai dengan simbol plus ( + ) adalah baris yang ditambahkan dari file pertama.

Abaikan kasus

Seperti yang Anda perhatikan pada contoh di atas, perintah diff peka huruf besar-kecil secara default.

Gunakan opsi -i untuk membedakan diff untuk mengabaikan case:

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.

Perintah diff membandingkan file baris demi baris. Untuk informasi lebih lanjut, ketikkan man diff di terminal Anda.

terminal diff