Linux команда diff - команда сравнения текстовых файлов.
Cuprins:
- Cum se utilizează comanda
diff - Format normal
- Formatul de context
- Format unificat
- Ignorați cazul
- Concluzie
diff
este un utilitar pentru linia de comandă care vă permite să comparați două fișiere linie cu linie. De asemenea, poate compara conținutul directoarelor.
Comanda
diff
este cel mai frecvent utilizată pentru a crea un patch care conține diferențele dintre unul sau mai multe fișiere care pot fi aplicate folosind comanda
patch
.
Cum se utilizează comanda
diff
Sintaxa pentru comanda
diff
este următoarea:
diff… FILES
Comanda
diff
poate afișa ieșirea în mai multe formate cu formatul normal, context și unificat fiind cele mai comune. Rezultatul include informații despre ce linii din fișiere trebuie schimbate, astfel încât acestea să devină identice. Dacă fișierele se potrivesc, nu se produce nicio ieșire.
Pentru a salva ieșirea comenzii într-un fișier, utilizați operatorul de redirecționare:
diff file1 file2 > patch
, vom folosi următoarele două fișiere pentru a explica cum funcționează comanda
diff
:
Ubuntu Arch Linux Debian CentOS Fedora
fișier2
Kubuntu Ubuntu Debian Arch Linux Centos Fedora
Format normal
În forma sa cea mai simplă când comanda
diff
este rulată pe două fișiere text fără nicio opțiune, produce o ieșire în format normal:
diff file1 file2
Rezultatul va arăta astfel:
0a1 > Kubuntu 2d2 < Arch Linux 4c4, 5 < CentOS --- > Arch Linux > Centos
Formatul normal de ieșire este format dintr-una sau mai multe secțiuni care descriu diferențele. Fiecare secțiune arată astfel:
change-command < from-file-line… --- > to-file-line…
0a1
,
2d2
și
4c4, 5
sunt comenzi de schimbare. Fiecare comandă de modificare conține următoarele, de la stânga la dreapta:
- Numărul de linie sau intervalul de linii din primul fișier.Un caracter de schimbare specială.Numărul de linie sau intervalul de linii din al doilea fișier.
Caracterul schimbării poate fi unul dintre următoarele:
-
a- Adăugați liniile.c- Schimbă liniile.d- Ștergeți liniile.
Comanda schimbare este urmată de liniile complete care sunt eliminate (
<
) și adăugate la fișier (
>
).
Să explicăm rezultatul:
-
0a1- Adăugați linia1a celui de-al doilea fișier la începutul fișierului1 (după linia0).-
> Kubuntu- Linia din a doua linie care este adăugată la primul fișier descris mai sus.
2d2- Ștergeți linia2din primul fișier. Simbolul2dupădînseamnă că dacă linia nu este ștersă, aceasta va apărea pe linia2în al doilea fișier.-
< Arch Linux- linia ștersă.
4c4, 5- Înlocuiți (modificați) linia5din primul fișier cu liniile4-5din al doilea fișier.-
< CentOS- Linia din primul fișier care trebuie înlocuit.---- Separator.> Arch Linuxși> Centos- Linii din al doilea fișier care înlocuiește linia din primul fișier.
-
Formatul de context
Când se folosește formatul de ieșire a contextului, comanda
diff
afișează mai multe linii de context în jurul liniilor care diferă între fișiere.
Opțiunea
-c
indică
diff
pentru a produce ieșire în format context:
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
Ieșirea începe cu numele și punctele de timp dacă sunt comparate fișierele și una sau mai multe secțiuni care descriu diferențele. Fiecare secțiune arată astfel:
*************** *** from-file-line-numbers **** from-file-line… --- to-file-line-numbers ---- to-file-line…
-
from-file-line-numbersșito-file-line-numbers- Numerele de linie sau intervalul de linii separate de virgule în primul și, respectiv, al doilea fișier.from-file-lineșito-file-line- Liniile care diferă și liniile de context:- Liniile care încep cu două spații sunt linii de context, liniile care sunt aceleași în ambele fișiere.Liniile care încep cu simbolul minus (
-) sunt liniile care nu corespund nimic din al doilea fișier. Liniile care lipsesc din al doilea fișier.Liniile care încep cu simbolul plus (+) sunt liniile care nu corespund nimic în primul fișier. Liniile care lipsesc din primul fișier.Liniile care încep cu semnul exclamării (!) Sunt liniile care se schimbă între două fișiere. Fiecare grup de linii încep cu!din primul fișier are o potrivire corespunzătoare în al doilea fișier.
- Liniile care încep cu două spații sunt linii de context, liniile care sunt aceleași în ambele fișiere.Liniile care încep cu simbolul minus (
Să explicăm cele mai importante părți ale rezultatului:
- În acest exemplu avem o singură secțiune care descrie diferențele.
*** 1, 6 ****și--- 1, 7 ----ne arată gama de linii din primul și al doilea fișier care sunt incluse în această secțiune. LiniiUbuntu,Debian,Fedorași ultima linie goală este aceeași în ambele fișiere. Aceste linii încep cu double space.Line- Arch Linuxdin primul fișier nu corespunde nimic din al doilea fișier. Deși această linie există și în al doilea fișier, pozițiile sunt diferite. Linia+ Kubuntudin cel de-al doilea fișier nu corespunde cu nimic din primul fișier! CentOSLinie! CentOS! CentOSdin primul fișier și linii! Arch Linux! Arch Linuxși! CentOS! CentOSdin al doilea fișier sunt schimbate între fișiere.
În mod implicit, numărul liniilor contextuale implicite este la trei. Pentru a specifica un alt număr, folosiți opțiunea
-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 unificat
Formatul de ieșire unificat este o versiune îmbunătățită a formatului contextual și produce o ieșire mai mică.
Folosiți opțiunea
-u
pentru a spune
diff
pentru a tipări ieșirea în formatul unificat:
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
Ieșirea începe cu numele și punctele de timp ale fișierelor și una sau mai multe secțiuni care descriu diferențele. Fiecare secțiune ia următoarea formă:
*************** @@ from-file-line-numbers to-file-line-numbers @@ line-from-files…
-
@@ from-file-line-numbers to-file-line-numbers @@- Numărul de linii sau intervalul de linii din primul și al doilea fișier incluse în această secțiune.line-from-files- Liniile care diferă și liniile de context:- Liniile care încep cu două spații sunt linii de context, liniile care sunt aceleași în ambele fișiere.Liniile care încep cu simbolul minus (
-) sunt liniile care sunt eliminate din primul fișier.Liniile care încep cu simbolul plus (+) sunt liniile care sunt adăugate din primul fișier.
- Liniile care încep cu două spații sunt linii de context, liniile care sunt aceleași în ambele fișiere.Liniile care încep cu simbolul minus (
Ignorați cazul
După cum observați în exemplele de mai sus, comanda
diff
este sensibilă la litere mari și minuscule.
Folosiți opțiunea
-i
pentru a indica
diff
pentru a ignora cazul:
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
Concluzie
Compararea fișierelor text pentru diferențe este una dintre cele mai frecvente sarcini pentru administratorii de sisteme Linux.
Comanda
diff
compară fișierele linie cu linie. Pentru mai multe informații, tastați
man diff
în terminalul dvs.
Utilizați linia de comandă cu comandă
Integrați linia de comandă, interfața grafică și o limbă puternică cu pachetul de instrumente Take Command. > Nu-ți place când vânezi un program pe care trebuie să-l faci, să-l găsești, și apoi să descoperi că face mai mult? Am găsit Command Command (100 $, încercare gratuită de 30 de zile) după ce am fost frustrat de linia de comandă necorespunzătoare din Windows. Am descoperit că mi-a dat ce vroiam și multe lucruri pe care nu știam că le-am vrut - dar acum cu siguranță o fac.
Comanda Chmod în linux (fișiere permisiuni)
În Linux, accesul la fișiere este gestionat prin permisiunile, atributele și proprietatea. Acest tutorial acoperă modul de utilizare a comenzii chmod pentru a modifica permisiunile de acces ale fișierelor și directoarelor.
Comanda Chgrp în linux (schimbare grup)
În Linux, fiecare fișier este asociat cu un proprietar și un grup și are permisiuni care determină utilizatorii care pot citi, scrie sau executa fișierul. Comanda chgrpc modifică proprietatea grupului de fișiere date.







