Hoe twee bestanden in Linux te vergelijken

How Compare Two Files Linux



Als u twee bestanden wilt vergelijken en het verschil wilt ontcijferen, gebruikt u een opdracht met de naam verschil is gebruikt. Deze handleiding is erop gericht u het gebruik van de verschil commando met verschillende opties om het verschil tussen twee bestanden te krijgen.

Dus, hoe werkt de verschil commando daadwerkelijk functioneren? De verschil commando vergelijkt de twee bestanden en geeft een lijst met verschillen tussen beide bestanden weer. Om precies te zijn, het levert een lijst op van wijzigingen die in het eerste bestand moeten worden aangebracht om overeen te komen met het tweede bestand. De verschil commando wordt ook door de programmeurs gebruikt om het verschil tussen twee broncodebestanden te krijgen om patches te ontwikkelen.







Voordat u in de voorbeelden duikt, moet u er rekening mee houden dat de volgorde van de bestanden erg belangrijk is. Omdat de verschil commando geeft uitvoer op basis van de volgorde van de bestanden.



Hoe diff Command in Linux te gebruiken om bestanden te vergelijken:

De syntaxis van de verschil commando wordt hieronder vermeld:



$verschil [opties] [bestand1] [bestand2]

Maak eerst twee bestanden. Ik maak tekstbestanden met de naam test_file_1.txt en test_file_2.txt . Deze bestanden bevatten inhoud met een klein verschil:





Gebruik nu de volgende opdracht om het verschil te krijgen:



$verschiltest_file_1.txt test_file_2.txt

De standaarduitvoer toonde de regels die overeenkomen volgens de volgorde van de bestanden die in de opdracht worden genoemd. Laten we dus de uitvoer decoderen:

De vergelijking van de bestanden is gelabeld en elk label heeft aan weerszijden een nummer. Het formaat is als volgt:

[Regelnummer van bestand 1][Label(a,c,d)][Regelnummer van bestand 2]

Er zijn drie keurmerken:

  • tot – Toevoegen: inhoud toevoegen aan het eerste bestand om te synchroniseren met het tweede bestand.
  • C – Wijzigen: geeft aan dat er een wijziging nodig is in de inhoud van het eerste bestand om overeen te komen met het tweede bestand.
  • NS – Verwijderen: verwijder inhoud uit het eerste bestand zodat het overeenkomt met het tweede.

2d1 geeft aan dat regel 2 van het eerste bestand moet worden verwijderd om overeen te komen met het tweede bestand van regel 1.

evenzo, 4c3 betekent een wijziging aanbrengen in de vierde regel van het eerste bestand zodat deze overeenkomt met regelnummer 3 van het tweede bestand, aangezien beide regels enigszins verschillen.

Er is een andere methode om het verschil te zien, gebruik de verschil commando met de -en optie:

$verschil -en -IN 60test_file_1.txt test_file_2.txt

In de bovenstaande uitvoer is de inhoud van test_file_1.txt wordt aan de linkerkant weergegeven, terwijl de inhoud van tekst_bestand_2.txt wordt weergegeven aan de rechterkant. Het verschil wordt aangegeven door de symbolen:

  • | — Regel is anders in het tweede bestand
  • > — Regel is extra in het tweede bestand
  • <— Line has been deleted from the second file

De -W geeft de breedte aan tussen de inhoud van twee bestanden. Gebruik het volgende om afzonderlijk te krijgen en het verschil te bekijken:

$verschil -en -IN 60 --onderdruk-gemeenschappelijke-regelstest_file_1.txt test_file_2.txt

Uitvoer in één regel krijgen met het diff-commando:

Als de gelabelde methode moeilijk voor u te decoderen is, dan is er een eenvoudigere aanpak. De ... gebruiken -Q optie met de verschil commando geeft je output in één regel. Nou ja, zonder enige aanvullende informatie:

$verschil -Qtest_file_1.txt test_file_2.txt

Als de bestanden verschillen, geeft het bovenstaande commando een uitvoer. Als de bestanden identiek zijn, is er geen uitvoer. Om het te demonstreren, maak ik een kopie van test_file_1.txt gebruik makend van:

$cptest_file_1.txt test_file_3.txt

Er wordt een nieuw bestand gemaakt met de naam test_file_3.txt met dezelfde inhoud die test_file_1.txt heeft. Gebruik nu:

$verschil -Qtest_file_1.txt test_file_2.txt

Aangezien beide bestanden vergelijkbare inhoud hebben, zou er daarom geen uitvoer zijn.

Hoe het verschil van bestanden in contextmodus te controleren met behulp van het diff-commando:

Om de vergelijking in de contextmodus te krijgen, de -C optie wordt gebruikt met de verschil opdracht:

$verschil -Ctest_file_1.txt test_file_2.txt

Laten we de uitvoer ontleden.

Om het verschil te behouden, wordt het eerste bestand aangegeven met *** samen met de datum en tijd van het maken, terwijl het tweede bestand wordt aangegeven met —.

De volgende regel geeft een reeks regels aan die tijdens de vergelijking in aanmerking zijn genomen. Voor het eerste bestand is het: *** 1.6 **** en voor het tweede bestand is het —1.5—- :

Het verschil wordt aangegeven door de symbolen:

  • + : Regel is niet aanwezig in het eerste bestand. Voeg het in het eerste bestand in of verwijder het uit het tweede bestand om met beide bestanden overeen te komen.
  • – : De regel bestaat in het eerste bestand, maar niet in het tweede bestand. Probeer het in het tweede bestand in te voegen of verwijder het uit het eerste om met beide bestanden overeen te komen.
  • ! : Lijn moet worden aangepast om te matchen.

Hoe u het verschil tussen bestanden in de uniforme modus kunt controleren met behulp van het diff-commando:

De uniforme modus lijkt veel op de contextmodus, maar zonder overbodige informatie. De vlag die we gebruiken is -u :

$verschil -utest_file_1.txt test_file_2.txt

In de uitvoer wordt het eerste bestand aangegeven met — en het tweede met +++. De tweede regel toont het aantal regels dat in beide bestanden ter vergelijking wordt overwogen, vervolgens de inhoud die moet worden verwijderd, toegevoegd of gewijzigd met de bijbehorende symbolen. Er zal geen symbool met gelijkaardige regels in beide bestanden zijn.

Hoofdlettergevoeligheid negeren tijdens het gebruik van het diff-commando:

Als u de bestanden wilt vergelijken terwijl u de hoofdlettergevoeligheid negeert, gebruik dan de -l vlag:

$verschil -ltest_file_1.txt test_file_2.txt

Ter demonstratie heb ik de NS van Diep in in het eerste bestand klein:

Zoals te zien is in het eerste commando, wordt het verschil aangegeven; Tijdens het gebruik -l dat verschil is weggenomen.

Enkele andere handige opties van de verschil commando staan ​​hieronder vermeld:

Optie Beschrijving
-tot Deze optie behandelt alle bestanden als tekstbestanden
-B Het negeert wijziging waar alle regels leeg zijn
-EN Deze optie negeert tabbladuitbreiding
-L Het negeert de wijzigingen waar alle regels overeenkomen
-s Geeft uitvoer wanneer twee bestanden identiek zijn
-in Het negeert alle witruimte
-MET Het negeert witruimte aan het einde van de regel

Hoe Vim Editor te gebruiken om twee bestanden te vergelijken:

Een andere methode om twee bestanden te vergelijken is het gebruik van de vimdiff opdracht. Daarvoor moet je vim hebben geïnstalleerd:

$sudogeschiktinstalleren ik kwam

Gebruik nu om twee bestanden te vergelijken:

$vimdiff test_file_1.txt test_file_2.txt

Beide bestanden worden naast elkaar geopend. Het gedeelte dat niet overeenkomt, wordt gemarkeerd:

Hoe twee bestanden te vergelijken met colordiff:

Een andere benadering is een soort uitbreiding van de verschil opdracht. U kunt de vergelijking beter herkenbaar maken door er kleuren aan toe te voegen. Gebruik om te installeren:

$sudogeschiktinstallerenkleurverschil

Gebruik om bestanden te vergelijken:

$colordiff test_file_1.txt test_file_2.txt

U kunt vervangen verschil met kleurverschil om de standaarduitvoer van de te krijgen verschil opdracht in gekleurd formaat.

Conclusie:

Om bestanden in Linux en zelfs in macOS te vergelijken, wordt een hulpprogramma gebruikt dat de diff. Het hulpprogramma diff vergelijkt twee bestanden en geeft informatie over de verschillen tussen de twee bestanden. De ontwikkelaars gebruiken het diff-commando voornamelijk om patchbestanden te maken.

In deze gids hebben we uitgebreid de verschil commando en hoe het te gebruiken om twee bestanden met verschillende opties te vergelijken. We hebben ook geleerd hoe te gebruiken kleurverschil om de bestandsverschillen herkenbaarder te maken. Maar als u het hulpprogramma op terminals moeilijk te gebruiken vindt, zijn er ook enkele GUI-gebaseerde tools, zoals Kompare, DiffMerge, Meld - Diff Tool en Diffuse - GUI Giff Tool.