How To Compare Files And Directories Using The diff Command in Linux
Isi kandungan:
- Bagaimana Menggunakan Perintah
diff - Format Normal
- Format Konteks
- Format Bersatu
- Abaikan kes
- Kesimpulannya
diff
adalah utiliti baris arahan yang membolehkan anda membandingkan dua fail baris demi baris. Ia juga boleh membandingkan kandungan direktori.
Perintah
diff
paling biasa digunakan untuk membuat patch yang mengandungi perbezaan antara satu atau lebih fail yang boleh digunakan menggunakan perintah
patch
.
Bagaimana Menggunakan Perintah
diff
Sintaks untuk arahan
diff
adalah seperti berikut:
diff… FILES
Perintah
diff
dapat memaparkan output dalam beberapa format dengan format biasa, konteks, dan bersatu menjadi yang paling umum. Output termasuk maklumat tentang baris mana dalam fail mesti diubah supaya mereka menjadi identik. Jika fail sepadan, tiada output dihasilkan.
Untuk menyimpan output arahan ke fail, gunakan pengendali redirection:
diff file1 file2 > patch
, kami akan menggunakan dua fail berikut untuk menjelaskan bagaimana arahan
diff
berfungsi:
Ubuntu Arch Linux Debian CentOS Fedora
file2
Kubuntu Ubuntu Debian Arch Linux Centos Fedora
Format Normal
Dalam bentuk yang paling mudah apabila arahan
diff
dijalankan pada dua fail teks tanpa sebarang pilihan, ia menghasilkan output dalam format normal:
diff file1 file2
Output akan kelihatan seperti ini:
0a1 > Kubuntu 2d2 < Arch Linux 4c4, 5 < CentOS --- > Arch Linux > Centos
Format keluaran normal terdiri daripada satu atau lebih bahagian yang menggambarkan perbezaannya. Setiap bahagian kelihatan seperti ini:
change-command < from-file-line… --- > to-file-line…
0a1
,
2d2
dan
4c4, 5
adalah perintah perubahan. Setiap arahan perubahan mengandungi yang berikut, dari kiri ke kanan:
- Nombor baris atau julat garisan dalam fail pertama. Aksara perubahan khas. Nombor baris atau julat garisan dalam fail kedua.
Watak perubahan boleh menjadi salah satu daripada yang berikut:
-
a- Tambah garisan.c- Tukar garisan.d- Padam baris.
Perintah perubahan diikuti oleh baris lengkap yang dikeluarkan (
<
) dan ditambahkan ke fail (
>
).
Mari kita jelaskan output:
-
0a1- Tambahkan baris1fail kedua pada permulaan fail1 (selepas baris0).-
> Kubuntu- Baris dari baris kedua yang ditambahkan pada fail pertama seperti yang diterangkan di atas.
2d2- Padamkan baris2dalam fail pertama.2selepas simboldbermakna bahawa jika garis tidak dipadamkan ia akan muncul pada baris2dalam fail kedua.-
< Arch Linux- baris yang dipadamkan.
4c4, 5- Gantikan (ubah) garisan5dalam fail pertama dengan garisan4-5dari fail kedua.-
< CentOS- Baris dalam fail pertama akan diganti.---- Separator.> Arch Linuxdan> Centos- Talian dari fail kedua menggantikan baris dalam fail pertama.
-
Format Konteks
Apabila format output konteks digunakan, arahan
diff
memaparkan beberapa baris konteks di sekitar baris yang berbeza antara fail.
Pilihan
-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 bermula dengan nama dan timestamp jika file yang dibandingkan, dan satu atau lebih bahagian yang menggambarkan perbezaannya. Setiap bahagian kelihatan seperti ini:
*************** *** from-file-line-numbers **** from-file-line… --- to-file-line-numbers ---- to-file-line…
-
from-file-line-numbersdanfrom-file-line-numbersto-file-line-numbers- Nombor baris atau pelbagai baris yang dipisahkan koma dalam fail pertama dan kedua, masing-masing.from-file-linedanto-file-line- Barisan yang berbeza dan garis konteks:- Garis bermula dengan dua ruang adalah garis konteks, garis yang sama dalam kedua-dua fail. Talian yang bermula dengan simbol tolak (
-) adalah garis yang tidak sesuai dengan apa-apa dalam fail kedua. Talian hilang dalam fail kedua. Talian yang bermula dengan simbol ditambah (+) adalah garisan yang tidak sesuai dengan apa-apa dalam fail pertama. Talian hilang dalam fail pertama.Lain bermula dengan tanda seru (!) Adalah garisan yang ditukar antara dua fail. Setiap kumpulan baris bermula dengan!dari fail pertama mempunyai padanan yang sama dalam fail kedua.
- Garis bermula dengan dua ruang adalah garis konteks, garis yang sama dalam kedua-dua fail. Talian yang bermula dengan simbol tolak (
Mari kita jelaskan bahagian-bahagian paling penting output:
- Dalam contoh ini kita hanya mempunyai satu bahagian yang menggambarkan perbezaannya.
*** 1, 6 ****dan--- 1, 7 ----memberitahu kami berbagai baris dari file pertama dan kedua yang disertakan dalam bagian ini.LinesUbuntu,Debian,Fedora, dan garisan kosong terakhir adalah sama dalam kedua-dua fail. Garis-garis ini bermula dengan ruang ganda. Talian- Arch Linuxdari fail pertama sepadan dengan apa-apa dalam fail kedua. Walaupun garis ini juga wujud dalam fail kedua, kedudukannya berbeza.Line+ Kubuntudari fail kedua sepadan dengan apa-apa dalam fail pertama.Line! CentOS! CentOSdari fail pertama dan baris! Arch Linux! Arch Linuxand! CentOS! CentOSdari fail kedua diubah antara fail.
Secara lalai bilangan baris konteks mungkir kepada tiga. Untuk menentukan nombor lain gunakan pilihan
-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 Bersatu
Format keluaran bersatu adalah versi yang lebih baik dalam format konteks dan menghasilkan keluaran yang lebih kecil.
Gunakan pilihan
-u
untuk memberitahu
diff
untuk mencetak output dalam format bersatu:
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 bermula dengan nama dan timestamps fail dan satu atau lebih bahagian yang menggambarkan perbezaan. Setiap bahagian mengambil borang berikut:
*************** @@ from-file-line-numbers to-file-line-numbers @@ line-from-files…
-
@@ from-file-line-numbers to-file-line-numbers @@- Nombor baris atau julat garisan dari fail pertama dan kedua yang termasuk dalam bahagian ini.line-from-files- Barisan yang berbeza dan garis konteks:- Garis yang bermula dengan dua ruang adalah garis konteks, garis yang sama dalam kedua-dua fail. Talian bermula dengan simbol minus (
-) adalah garis yang dikeluarkan dari fail pertama. Talian yang bermula dengan simbol ditambah (+) adalah baris yang ditambah dari fail pertama.
- Garis yang bermula dengan dua ruang adalah garis konteks, garis yang sama dalam kedua-dua fail. Talian bermula dengan simbol minus (
Abaikan kes
Seperti yang anda perhatikan dalam contoh di atas, perintah
diff
adalah sensitif kes secara lalai.
Gunakan pilihan
-i
untuk memberitahu
diff
untuk mengabaikan kes:
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
Kesimpulannya
Membandingkan fail teks untuk perbezaan adalah salah satu tugas yang paling biasa untuk pentadbir sistem Linux.
Perintah
diff
membandingkan fail baris demi baris. Untuk maklumat lanjut, taip
man diff
di terminal anda.
Gunakan arahan arahan untuk membakar fail ISO di Windows 10
Ketahui cara membakar imej ISO ke CD atau DVD menggunakan Prompt Perintah di Windows 10/8/7. Ini akan membawa Windows Disc Image Burner atau isoburn.exe.
Bagaimana untuk membuka suatu arahan arahan yang tinggi menggunakan CMd
Petua geek! Sekiranya anda perlu membuka suatu arahan arahan yang tinggi, anda boleh menggunakan perintah berikut yang biasa, anda boleh melakukannya dengan menggunakan arahan berikut.
11 Barisan arahan arahan Brilliant (cmd) yang anda tidak tahu
Check Out 11 Command Prompt Brilliant (cmd) Trik Anda Mungkin Tidak Tahu Tentang.







