Den här guiden visar hur du använder Linux för att jämföra två filer och mata ut sin skillnad till skärmen eller till en fil.
Du behöver inte installera någon speciell programvara för att jämföra filer med Linux men du behöver veta hur man öppnar ett terminalfönster.
Som den länkade guiden visar finns det många sätt att öppna ett terminalfönster med Linux. Det enklaste är att trycka på tangenterna CTRL, ALT och T samtidigt.
Skapa filer som ska jämföras
För att följa med denna guide skapa en fil som heter "file1" och ange följande text:
10 gröna flaskor som står på en vägg
10 gröna flaskor som står på en vägg
Om en grön flaska ska falla av misstag
Det skulle finnas 9 gröna flaskor som står på väggen
Du kan skapa en fil genom att följa dessa instruktioner:
-
Öppna filen genom att skriva följande kommando: nano file1
-
Skriv texten i nano-redigeraren
-
Tryck CTRL och O för att spara filen
-
Tryck på CTRL och X för att lämna filen
Skapa nu en annan fil som heter "file2" och ange följande text:
10 gröna flaskor som står på en vägg
Om 1 grön flaska ska falla av misstag
Det skulle finnas 9 gröna flaskor som står på väggen
Du kan skapa en fil genom att följa dessa instruktioner:
-
Öppna filen genom att skriva följande kommando: nano file2
-
Skriv texten i nano-redigeraren
-
Tryck CTRL och O för att spara filen
-
Tryck på CTRL och X för att lämna filen
Hur man jämför två filer med Linux
Kommandot som används i Linux för att visa skillnaderna mellan 2 filer kallas diff-kommandot.
Den enklaste formen av diff-kommandot är som följer:
diff file1 file2
Om filerna är desamma kommer det inte att finnas någon utgång när du använder det här kommandot, men eftersom det finns skillnader så ser du utdata som liknar följande:
2,4c2,3
<10 gröna flaskor som står på väggen
<Om en grön flaska ska falla av misstag
<Det skulle finnas 9 gröna flaskor som står på väggen
…
> Om en grön flaska ska falla av misstag
> Det skulle finnas 9 gröna flaskor som står på väggen
Ursprungligen kan utmatningen verka förvirrande men när du förstår terminologin är det ganska logiskt.
Med egna ögon ser du att skillnaderna mellan de två filerna är följande:
- Den andra filen har bara tre rader, medan den första filen har 4.
- Den andra filen säger "1 grön flaska" på tredje raden medan den första filen säger "en grön flaska"
- Den andra filen säger "det skulle" istället för "det skulle" på sista raden
Utmatningen från diff-kommandot visar att mellan linjerna 2 och 4 i den första filen och linjerna 2 och 3 i den andra filen finns skillnader.
Det listar sedan raderna från 2 till 4 från den första filen följt av de 2 olika raderna i den andra filen.
Så här visar du bara om filerna är olika
Om du bara vill veta om filerna är olika och du inte är intresserad av vilka linjer som är olika kan du köra följande kommando:
diff -q file1 file2
Om filerna är olika kommer följande att visas:
Filer fil1 och fil2 skiljer sig åt
Om filerna är desamma visas ingenting.
Så här visar du ett meddelande Om filerna är desamma
När du kör ett kommando vill du veta att det har fungerat korrekt så att du vill att ett meddelande ska visas när du kör diff-kommandot oavsett om filerna är lika eller olika
För att uppnå detta krav använder du diff-kommandot, kan du använda följande kommando :.
diff -s file1 file2
Nu om filerna är desamma får du följande meddelande:
Filer fil1 och fil2 är identiska
Hur man producerar skillnaderna sida om sida
Om det finns många skillnader kan det mycket snabbt bli förvirrande om vad skillnaderna faktiskt är mellan de två filerna.
Du kan ändra utmatningen av diff-kommandot så att resultaten visas sida vid sida. För att göra detta kör följande kommando:
diff -y file1 file2
Utdatan för filen använder | symbol för att visa skillnad mellan de två raderna, en <för att visa en rad som har tagits bort och a> för att visa en rad som har bifogats.
Intressant om du kör kommandot med våra demonstrationsfiler kommer alla linjer att visas som olika med undantag för den sista raden av fil 2 som visas som borttagen.
Begränsa kolumnbredderna
När två filer jämförs sida vid sida kan det vara svårt att läsa om filerna har många kolumner text.
För att begränsa ett antal kolumner använd följande kommando:
Hur man ignorerar fallskillnader när man jämför filer
Om du vill jämföra två filer men du bryr dig inte om bokstäverna är desamma mellan de två filerna kan du använda följande kommando:
Hur man ignorerar bakre vita rymden i slutet av en rad
Om du, när du jämför filer, märker massor av skillnader och skillnaderna orsakas av det vita utrymmet i slutet av raderna kan du släppa bort dem som att visas som ändringar genom att köra följande kommando:
Hur man ignorerar alla vita rymdskillnader mellan två filer
Om du bara är intresserad av texten i en fil och du bryr dig om det finns fler mellanslag i den ena kan du använda följande kommando:
Hur man ignorerar tomma linjer när man jämför två filer
Om du inte bryr dig om att en fil kan ha extra tomma rader i det kan du jämföra filerna med följande kommando:
Sammanfattning
Du kan hitta mer information genom att läsa manualen för diff-kommandot.
man diff
Diff-kommandot kan användas i sin enklaste form för att bara visa skillnaderna mellan 2 filer, men du kan också använda den för att skapa en diff-fil som en del av en patchstrategi som visas i den här guiden till Linux-patch-kommandot.
Ett annat kommando du kan använda för att jämföra filer är cmp-kommandot som det visas i den här guiden. Detta jämför filer byte med byte.