Hur man jämför två filer i Linux

How Compare Two Files Linux



Om du vill jämföra två filer och dechiffrera skillnaden, kallas ett kommando diff är använd. Den här guiden är inriktad på att ge dig användningen av diff kommando med olika alternativ för att få skillnaden mellan två filer.

Så, hur gör diff kommando faktiskt fungerar? De diff kommando jämför de två filerna och matar ut en lista över skillnader mellan båda filerna. Mer exakt ger det en lista över ändringar som måste göras i den första filen för att matcha den andra filen. De diff kommandot används också av programmerarna för att få skillnaden mellan två källkodfiler för att utveckla patchar.







Innan du dyker ner i exemplen, notera att ordningen på filerna är mycket viktig. Eftersom den diff kommandot ger utdata baserat på filernas ordning.



Hur man använder diff -kommando i Linux för att jämföra filer:

Syntaxen för diff kommandot nämns nedan:



$diff [alternativ] [fil1] [file2]

Skapa först två filer. Jag skapar textfiler med namnet test_file_1.txt och test_file_2.txt . Dessa filer innehåller innehåll med en liten skillnad:





Använd nu följande kommando för att få skillnaden:



$difftest_file_1.txt test_file_2.txt

Standardutmatningen visade raderna som matchar enligt ordningen på filerna som nämns i kommandot. Så, låt oss avkoda utmatningen:

Jämförelsen av filerna är märkt och varje etikett har ett nummer på vardera sidan. Formatet är följande:

[Linjenummer för fil 1] [Etikett (a, c, d)] [Linjenummer för fil 2]

Det finns tre etiketter:

  • till - Lägg till: Lägg till innehåll i den första filen för att synkronisera med den andra filen.
  • c - Ändring: Anger att en ändring behövs i innehållet i den första filen för att matcha den andra filen.
  • d - Ta bort: Ta bort innehåll från den första filen för att matcha den andra.

2d1 indikerar att rad 2 ska raderas i den första filen för att matcha den andra filen från rad nummer 1.

Liknande, 4c3 betyder att göra en ändring i den fjärde raden i den första filen för att matcha rad nummer 3 i den andra filen eftersom båda raderna är något olika.

Det finns en annan metod för att se skillnaden, använd diff kommando med -och alternativ:

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

I ovanstående utmatning, innehållet i test_file_1.txt visas på vänster sida, medan innehållet i text_file_2.txt visas på höger sida. Skillnaden indikeras av symbolerna:

  • | - Linjen är annorlunda i den andra filen
  • > - Linjen är ytterligare i den andra filen
  • <— Line has been deleted from the second file

-W anger bredden mellan innehållet i två filer. För att få separat och se skillnaden, använd följande:

$diff -och -I 60 -undertrycka-gemensamma linjertest_file_1.txt test_file_2.txt

Så här får du utmatning på en rad med diff -kommandot:

Om den märkta metoden är svår för dig att avkoda, finns det ett enklare tillvägagångssätt. Använda -q alternativ med diff kommandot ger dig utmatning på en rad. Tja, utan ytterligare information, dock:

$diff -qtest_file_1.txt test_file_2.txt

Om filerna skiljer sig kommer kommandot ovan att ge en utmatning. Om filerna är identiska kommer det ingen utmatning. För att demonstrera det skapar jag en kopia av test_file_1.txt använder sig av:

$cptest_file_1.txt test_file_3.txt

En ny fil skapas med namnet test_file_3.txt som innehåller samma innehåll som test_file_1.txt har. Använd nu:

$diff -qtest_file_1.txt test_file_2.txt

Eftersom båda filerna har liknande innehåll skulle det därför inte finnas någon utmatning.

Hur man kontrollerar skillnaden mellan filer i kontextläge med hjälp av diff -kommandot:

För att få jämförelsen i kontextläge, -c alternativet kommer att användas med diff kommando:

$diff -ctest_file_1.txt test_file_2.txt

Låt oss dissekera utgången.

För att bibehålla skillnaden indikeras den första filen med *** tillsammans med datum och tid för skapandet, medan den andra filen indikeras med -.

Nästa rad anger ett antal rader som beaktas vid jämförelse. För den första filen är det *** 1,6 **** och för den andra filen är det —1.5—- :

Skillnaden indikeras av symbolerna:

  • +: Raden finns inte i den första filen. Sätt in den i den första filen eller ta bort den från den andra filen för att matcha båda filerna.
  • -: Raden finns i den första filen men inte i den andra filen. Försök att infoga den i den andra filen eller ta bort den från den första för att matcha båda filerna.
  • ! : Linjen behöver ändras för att matcha.

Hur man kontrollerar skillnaden mellan filer i enhetligt läge med hjälp av diff -kommandot:

Det enhetliga läget är ganska likt kontextläget men utan överflödig information. Flaggan vi använder är -u :

$diff -utest_file_1.txt test_file_2.txt

I utdata indikeras den första filen med - och den andra med +++. Den andra raden visar antalet rader som övervägs för jämförelse i båda filerna, sedan innehållet som ska raderas, läggas till eller ändras med symbolerna med. Det kommer inte att finnas någon symbol med liknande rader i båda filerna.

Hur man ignorerar fallkänslighet när man använder diff -kommandot:

Om du vill jämföra filerna samtidigt som du ignorerar skiftlägeskänsligheten använder du -i flagga:

$diff -itest_file_1.txt test_file_2.txt

För demonstration har jag gjort D av Djupt in i den första filen liten:

Som framgår av det första kommandot indikeras skillnaden; medan du använder -i den skillnaden har tagits bort.

Några andra användbara alternativ för diff kommandot listas nedan:

Alternativ Beskrivning
-till Detta alternativ behandlar alla filer som textfiler
-B Det ignorerar ändring där alla rader är tomma
-OCH Detta alternativ ignorerar flikutvidgning
-Jag Den ignorerar ändringarna där alla linjer matchar
-s Ger utmatning när två filer är identiska
-i Den ignorerar allt vitt utrymme
-MED Det ignorerar vitt utrymme vid radänden

Så här använder du Vim Editor för att jämföra två filer:

En annan metod för att jämföra två filer är att använda vimdiff kommando. För det måste du ha vim installerat:

$sudobenägenInstallera jag kom

För att jämföra två filer använder du nu:

$vimdiff test_file_1.txt test_file_2.txt

Båda filerna öppnas sida vid sida. Den del som inte matchar kommer att markeras:

Hur man jämför två filer med colordiff:

Ett annat tillvägagångssätt är en slags förlängning av diff kommando. Du kan göra jämförelsen mer identifierbar genom att lägga till färger i den. För att installera använd:

$sudobenägenInstallerakolordiff

För att jämföra filer, använd:

$colordiff test_file_1.txt test_file_2.txt

Du kan byta ut diff med kolordiff för att få standardutmatningen för diff kommando i färgat format.

Slutsats:

För att jämföra filer i Linux och även i macOS kallas ett verktyg som används diff. Diff -verktyget jämför två filer och ger information om skillnaderna mellan de två filerna. Utvecklarna använder främst diff -kommandot för att skapa patchfiler.

I den här guiden diskuterade vi grundligt diff kommando och hur man använder det för att jämföra två filer med olika alternativ. Vi lärde oss också hur man använder kolordiff för att göra filskillnaderna mer igenkännliga. Men om du tycker att terminalbaserat verktyg är svårt att använda, finns det också några GUI-baserade verktyg, till exempel Kompare, DiffMerge, Meld-Diff Tool och Diffuse-GUI Giff Tool.