Sådan sammenlignes to filer i Linux

How Compare Two Files Linux



Hvis du vil sammenligne to filer og tyde forskellen, kaldes en kommando diff anvendes. Denne vejledning er fokuseret på at give dig brugen af diff kommando med forskellige muligheder for at få forskellen mellem to filer.

Så hvordan gør diff kommando faktisk fungere? Det diff kommando sammenligner de to filer og udsender en liste over forskelle mellem begge filer. Mere præcist giver det en liste over ændringer, der skal foretages i den første fil for at matche den anden fil. Det diff kommandoen bruges også af programmørerne til at få forskellen mellem to kildekodefiler til at udvikle patches.







Før du dykker ned i eksemplerne, skal du bemærke, at rækkefølgen af ​​filerne er meget vigtig. Fordi diff kommando giver output baseret på rækkefølgen af ​​filerne.



Sådan bruges diff -kommando i Linux til at sammenligne filer:

Syntaksen for diff kommandoen er nævnt nedenfor:



$diff [muligheder] [fil 1] [fil2]

Opret først to filer. Jeg opretter tekstfiler med navnet test_file_1.txt og test_file_2.txt . Disse filer indeholder indhold med en lille forskel:





Brug nu følgende kommando for at få forskellen:



$difftest_file_1.txt test_file_2.txt

Standardoutputtet viste de linjer, der matcher i henhold til rækkefølgen af ​​filerne, der er nævnt i kommandoen. Så lad os afkode output:

Sammenligningen af ​​filerne er mærket, og hver etiket har et nummer på hver side. Formatet er som følger:

[Linjenummer for fil 1] [Etiket (a, c, d)] [Linjenummer for fil 2]

Der er tre etiketter:

  • til - Tilføj: Tilføj indhold i den første fil, der skal synkroniseres med den anden fil.
  • c - Ændring: Angiver, at en ændring er nødvendig i indholdet af den første fil for at matche den anden fil.
  • d - Slet: Fjern indhold fra den første fil, der matcher den anden.

2d1 angiver at slette linjenummer 2 i den første fil for at matche den anden fil fra linje nummer 1.

Tilsvarende 4c3 betyder at foretage en ændring i den fjerde linje i den første fil for at matche linje nummer 3 i den anden fil, da begge linjer er lidt forskellige.

Der er en anden metode til at se forskellen, brug diff kommando med -og mulighed:

$diff -og -I 60test_file_1.txt test_file_2.txt

I ovenstående output er indholdet af test_file_1.txt vises på venstre side, mens indholdet af text_file_2.txt vises på højre side. Forskellen er angivet med symbolerne:

  • | - Linjen er anderledes i den anden fil
  • > - Linje er ekstra i den anden fil
  • <— Line has been deleted from the second file

-W angiver bredden mellem indholdet af to filer. For at få separat og se forskellen skal du bruge følgende:

$diff -og -I 60 -undertrykke-fælles-linjertest_file_1.txt test_file_2.txt

Sådan får du output i en linje ved hjælp af diff -kommandoen:

Hvis den mærkede metode er svær for dig at afkode, så er der en enklere tilgang. Bruger -q mulighed med diff kommando giver dig output i en linje. Tja, dog uden yderligere oplysninger:

$diff -qtest_file_1.txt test_file_2.txt

Hvis filerne er forskellige, vil ovenstående kommando give et output. Hvis filerne er identiske, kommer der ingen output. For at demonstrere det opretter jeg en kopi af test_file_1.txt ved brug af:

$cptest_file_1.txt test_file_3.txt

En ny fil vil blive oprettet med navnet på test_fil_3.txt indeholder det samme indhold som test_file_1.txt har. Brug nu:

$diff -qtest_file_1.txt test_file_2.txt

Da begge filer har lignende indhold, ville der derfor ikke være noget output.

Sådan kontrolleres filforskellen i konteksttilstand ved hjælp af diff -kommandoen:

For at få sammenligningen i konteksttilstand skal -c indstilling vil blive brugt med diff kommando:

$diff -ctest_file_1.txt test_file_2.txt

Lad os dissekere output.

For at opretholde forskellen angives den første fil med *** sammen med datoen og tidspunktet for oprettelsen, mens den anden fil er angivet med -.

Den næste linje angiver en række linjer, der overvejes under sammenligning. For den første fil er det *** 1,6 **** og for den anden fil er det —1,5—- :

Forskellen er angivet med symbolerne:

  • +: Linjen findes ikke i den første fil. Indsæt den i den første fil, eller fjern den fra den anden fil for at matche begge filer.
  • -: Linjen findes i den første fil, men ikke i den anden fil. Prøv at indsætte den i den anden fil, eller fjern den fra den første for at matche begge filer.
  • ! : Linjen skal ændres for at matche.

Sådan kontrolleres filforskellen i Unified Mode ved hjælp af diff -kommandoen:

Den forenede tilstand ligner ret meget konteksttilstanden, men uden redundante oplysninger. Det flag vi bruger er -u :

$diff -utest_file_1.txt test_file_2.txt

I output er den første fil angivet med - og den anden med +++. Den anden linje viser antallet af linjer, der betragtes som sammenligning i begge filer, derefter indholdet, der skal slettes, tilføjes eller ændres med symbolerne med. Der vil ikke være noget symbol med lignende linjer i begge filer.

Sådan ignoreres sagfølsomhed, mens du bruger diff -kommandoen:

Hvis du vil sammenligne filerne, mens du ignorerer sagfølsomheden, skal du bruge -jeg flag:

$diff -jegtest_file_1.txt test_file_2.txt

Til demonstration har jeg lavet D af Deepin i den første fil lille:

Som det ses i den første kommando, er forskellen angivet; mens du bruger -jeg den forskel er fjernet.

Nogle andre nyttige muligheder i diff kommandoen er angivet nedenfor:

Mulighed Beskrivelse
-til Denne indstilling behandler alle filerne som tekstfiler
-B Det ignorerer ændringer, hvor linjer alle er tomme
-OG Denne indstilling ignorerer faneudvidelse
-JEG Det ignorerer ændringerne, hvor alle linjer matcher
-s Giver output, når to filer er identiske
-i Det ignorerer alt hvidt rum
-MED Det ignorerer hvidt mellemrum ved linieenden

Sådan bruges Vim Editor til at sammenligne to filer:

En anden metode til at sammenligne to filer er at bruge vimdiff kommando. Til det skal du have vim installeret:

$sudopassendeinstallere jeg kom

Brug nu for at sammenligne to filer:

$vimdiff test_file_1.txt test_file_2.txt

Begge filer åbnes side om side. Den del, der ikke matcher, fremhæves:

Sådan sammenlignes to filer ved hjælp af colordiff:

En anden tilgang er en slags forlængelse af diff kommando. Du kan gøre sammenligningen mere identificerbar ved at tilføje farver til den. For at installere brug:

$sudopassendeinstallerekolordiff

For at sammenligne filer skal du bruge:

$colordiff test_file_1.txt test_file_2.txt

Du kan udskifte diff med kolordiff for at få standard output af diff kommando i farvet format.

Konklusion:

For at sammenligne filer i Linux og endda i macOS kaldes et anvendt værktøj diff. Diff -værktøjet sammenligner to filer og giver information om forskellene mellem de to filer. Udviklerne bruger primært diff -kommandoen til at oprette patch -filer.

I denne vejledning diskuterede vi grundigt diff kommando og hvordan man bruger den til at sammenligne to filer med forskellige muligheder. Vi lærte også at bruge kolordiff for at gøre filforskellene mere genkendelige. Men hvis du finder terminalbaseret værktøj svært at bruge, er der også nogle GUI-baserede værktøjer, såsom Kompare, DiffMerge, Meld-Diff Tool og Diffuse-GUI Giff Tool.