TILLBEHÖR

Linux Diff Command – Alternativ och exempel

Allt anses vara en fil i Linux. En Linux-dator har tusentals filer som innehåller olika typer av innehåll. Du kan behöva analysera några av dessa filer och visa skillnaderna mellan vissa filer för dina utvecklingsbehov. Linux tillhandahåller kommandot diff för att jämföra innehållet i två filer på din Linux-dator.

I den här handledningen kommer vi att lära oss hur du använder kommandot Linux diff för att jämföra två filer.

Förutsättningar

  • En fungerande Linux-dator med terminalåtkomst.
  • Grundläggande förtrogenhet med Linux kommandoradsgränssnitt.
  • Iver att lära sig nya Linux-kommandon och prova dessa exempel.

Diff-kommando i Linux

Kommandot diff i Linux används för att jämföra två filer och lista deras skillnader. Detta kommando jämför två filer rad för rad. Du kan också använda kommandot Linux diff för att jämföra innehållet i Linux-kataloger. Utdata från Linux diff-kommandot ger instruktioner om hur du uppdaterar den första filen för att matcha den med den andra filen.

Du kan använda kommandot diff i Linux för att skapa en patch som innehåller skillnader mellan två filer. Denna patch kan appliceras med kommandot patch i Linux. Diff spelar också en betydande roll i scripting där du kan köra vissa kommandon baserat på skillnaderna mellan jämförda filer.

Diff Kommandosyntax

Den grundläggande syntaxen för diff-kommandot i Linux är följande:

diff [option] file1 file2

Förstå Diff-kommandot i Linux-utgång

När du arbetar med kommandot diff i Linux är det viktigt att veta hur du läser kommandot diff, vilket inkluderar:

  • Utdatarad som börjar med < anger det första filinnehållet.
  • Utdatarad som börjar med > anger det andra filens innehåll.

Följande specialsymboler indikerar hur du kan ändra den första filen så att den matchar den andra filen:

  1. a (lägg till) – innehåll måste läggas till.
  2. c (förändring) – något måste ändras.
  3. d (radera) – något måste raderas.

Diff-kommandoalternativ

Kommandot diff i Linux ger olika alternativ som du kan använda för att ändra kommandobeteendet och visa utdata i olika format. Följande tabell beskriver några av de mest använda Linux diff-kommandoalternativen:

Alternativbeskrivning
-c Visar utdata i kontextformatet.
-u Visa utdata i enhetligt format och ignorera redundanta kontextrader.
-jag Ignorerar fall i filinnehållet.
-a Visar filer som vanliga textfiler och jämför två filer rad för rad.
-b Ignorerar blanksteg före tomma utdatarader när filerna jämförs.
-B Ignorerar tomma rader när filerna jämförs.
–binär Jämför och skriver filinnehåll i binärt läge.
-e Skapar ett giltigt ed-skript från utdata.
-E Ignorerar flikexpansion när filerna jämförs.
-N Behandlar en fil som närvarande men tom om filen saknas.
-q Anger om filerna skiljer sig åt, utan att ge exakta skillnader.
-s Visar att filerna är identiska.
-w Ignorerar vita utrymmen helt.

Linux Diff Kommando Exempel

Utdata för Linux diff-kommandot kan visas i följande tre format:

  • Normalt format – Detta är standardutgången som visas när du jämför två filer utan att ange något annat alternativ.
  • Kontextformat – Detta utdataformat visar kontextrader om texten som är annorlunda i de jämförda filerna.
  • Unified format- Detta utdataformat är en förbättrad form av kontextformatutdata och det visar en mindre utdata.

För att bättre förklara hur Linux diff-kommandot fungerar skapar vi två exempelfiler som vi kommer att använda i exemplen i denna handledning:

1. Skapa den första filen capitals.txt med nanoredigeraren:

nano capitals.txt

2. Lägg till följande rader i den första filen:

Beijing
Tokyo
Mumbai
Moscow

3. Spara ändringarna och avsluta.

4. Skapa den andra filen city.txt med nanoredigeraren:

nano cities.txt

5. Lägg till följande rader i den andra filen:

New York
Los Angeles
Chicago
Huston
Phoenix

6. Spara ändringarna och avsluta.

1. Jämför i normalt format

För att jämföra filerna i normalt format, ange filnamnen efter kommandot diff:

diff capitals.txt cities.txt

Det normala diff-kommandot ger instruktioner om hur du ändrar den första filen så att den blir identisk med den andra filen. Låt oss granska resultatet och översätta instruktionerna i läsbart format:

diff jämför två filer
  • 1d0 – Du måste ta bort den första raden från den första filen, annars kommer den att synas på rad nummer 0 i den andra filen.
  • < Beijing – Texten som måste raderas anges som 1d0.
  • 3c2 – På rad nummer 3 i den första filen måste du ändra rad 2 från den andra filen.
  • < Tokyo – Texten du behöver ändra.
  • > Los Angeles – Texten du behöver ändra den till.
  • 5c4,5 – På rad 5 i den första filen måste du ändra radnummer 4 och 5 från den andra filen.
  • < Moskva – Texten du behöver ändra.
  • > Huston – Texten du behöver ändra den till.
  • > Tokyo – Texten du behöver ändra den till.

Du kan använda patch-kommandot efter att ha genererat utdatainstruktionerna för att spara diff-kommandot och tillämpa ändringarna.

2. Jämför i kontextläge

Standardutgången för diff-kommandot är ganska komplicerad att förstå. Du kan ändra denna utdata till kontextläget för att göra det lätt att förstå. Använd alternativet -c med kommandot diff för att visa kontextrader runt innehållet som är annorlunda:

diff -c capitals.txt cities.txt
diff jämför två filer i kontextläge

I denna utdata visar raderna som börjar med *** information om den första filen, och raderna som börjar med — visar information om den andra filen. De första två raderna av utdata från diff-kommandot visar filnamn och ändringsdatum. Sedan har vi ********** separator.

Efter det har vi radintervallet (1,5) och skillnader för den första filen. Den initiala symbolen indikerar ändringen som vi behöver göra i den första filen och resten av raden är innehållet. Du kan se följande tre symboler:

  • – eller minus – Du måste ta bort detta innehåll.
  • ! eller utropstecken – Du måste ersätta detta innehåll med motsvarande rad i den andra filen.
  • + eller plus – Du måste lägga till denna text i den första filen.

Om en rad inte börjar med en symbol, behöver den inte ändras.

3. Jämför i Unified Format

Använd alternativet -u för att visa utdata i ett enhetligt format där de redundanta kontextraderna ignoreras:

diff -u capitals.txt cities.txt
diff-utgång i enhetligt format

I denna utgång visar raderna som börjar med — information om den första filen och raderna som börjar med +++ visar information om den andra filen. Under det representerar @@ -1,5 +1,5 @@ radnummerintervallet för båda filerna.

De nästa raderna visar listan över ändringar som du behöver göra för att göra båda filerna identiska. Du kan se följande två symboler:

  • – eller minus – Du måste ta bort detta innehåll.
  • + eller plus – Du måste lägga till denna text i den första filen.

Om en rad inte börjar med en symbol, behöver den inte ändras.

4. Ignorera skiftläge med -i Option

Diff-kommandot i Linux, liksom alla andra Linux-kommandon, är skiftlägeskänsligt som standard. Detta betyder att om den enda skillnaden mellan den angivna filen är skiftläge i texten, så kommer du också att se skillnaden i filerna. Du kan dock använda alternativet -i för att ignorera skillnaden mellan skiftlägen i innehållet i de två filerna.

Låt oss till exempel skapa en ny fil med namnet metros.txt:

nano metros.txt

Lägg sedan till följande stadsnamn till den här filen med två poster som börjar med en liten bokstav:

Beijing
New York
tokyo
Mumbai
moscow

Utan något ytterligare alternativ visar utmatningen av diff-kommandot att dessa filer är olika och listar de ändringar vi behöver för att göra dem identiska:

Använd alternativet -i för att ignorera skiftläge och visa resultat som är olika i innehåll, inte bara skiftläge:

Nu ser vi inga skillnader eftersom innehållet inte är annorlunda.

5. Använda Patch med Diff

I en produktionsmiljö uppdateras filerna ofta och det är extremt svårt att hålla reda på alla dessa förändringar. Genom att använda diff-kommandot i kombination med patchen får du möjlighet att direkt tillämpa ändringarna på målfilerna.

Det första steget är att spara skillnaderna mellan två filer i en ny fil:

diff -u capitals.txt cities.txt > correction.txt

Sedan kontrollerar vi innehållet i filen correction.txt:

cat correction.txt

När vi har listan över ändringar kan du applicera patchen på den andra filen enligt följande:

patch cities.txt < correction.txt

Kontrollera innehållet i den andra filen för att se till att den är identisk med den första filen:

cat cities.txt

Slutsats

I den här handledningen lärde vi oss hur man använder kommandot diff i Linux för att jämföra två filer och lista skillnaderna. Vi har inkluderat flera exempel i den här artikeln som hjälper dig att bättre förstå hur diff-kommandot fungerar. Du kan också använda patchen i kombination med kommandot diff för att automatisera ändringarna för att göra de jämförda filerna identiska.

Om den här resursen hjälpte dig, låt oss veta att du bryr dig genom en Tack Tweet. Tweet ett tack

Vi är glada att du gillade artikeln. Dela med dina vänner.

Förlåt för det.

Hur kan vi förbättra det?

Om författaren

Subhash Chandra

Subhash Chandra

Subhash Chandra är en professionell skribent och en Oracle-certifierad databasadministratör med över 15 års erfarenhet av att skriva. Han har en passion för teknik och älskar att skriva instruktionsartiklar för Linux, Windows, Mac OS, nätverk, telekom och databas. På fritiden tycker han om att simma och spela bordtennis.

Botón volver arriba

Ad blocker detected

You must remove the AD BLOCKER to continue using our website THANK YOU