I en värld av Linux är hantering och jämförelse av filer en vanlig uppgift för både systemadministratörer och utvecklare. Möjligheten att jämföra filer rad för rad är avgörande för att identifiera skillnader, felsöka kod och säkerställa dataintegriteten. Ett kraftfullt verktyg som underlättar denna process ärdiff>
kommando. I den här artikeln kommer vi att utforska hur man använderdiff>
kommando för att jämföra filer rad för rad i Linux.
Innehållsförteckning
- Grundläggande syntax för diff-kommando
- Alternativ Tillgängliga i diff Kommando
- Praktisk implementering av hur man jämför filer rad för rad i Linux? :
- Jämför två filer
- Ta bort en rad i filer med diff-kommandot
- Visa skillnader i kontextläge
- Visa skillnader i enhetligt läge
- Skiftlägesokänslig jämförelse mellan filer
- Visar differensversion
Förstå skillnaden Kommando
diff står för skillnad .Dediff>
command är ett mångsidigt verktyg som är förinstallerat på de flesta Linux-distributioner. Dess primära syfte är att jämföra innehållet i två filer och visa skillnaderna mellan dem. Kommandot ger ett omfattande sätt att markera ändringar, tillägg och raderingar i ett tydligt och läsbart format.
Detta kommando används för att visa skillnaderna i filerna genom att jämföra filerna rad för rad. Till skillnad från sina kolleger, cmp och komm , talar om för oss vilka rader i en fil som ska ändras för att göra de två filerna identiska.
Det viktiga att komma ihåg är det diff använder vissa speciella symboler och instruktioner som krävs för att göra två filer identiska. Den ger dig instruktioner om hur du ändrar den första filen så att den matchar den andra filen.
Grundläggande syntax för diff-kommando
Den grundläggande syntaxen fördiff>
kommandot är som följer:
diff [OPTION]... FILE1 FILE2>
Här, ` FILE1`>
och ` FILE2`>
är de två filerna du vill jämföra.
Den ` OPTION`>
flaggan låter dig anpassa beteendet för ` diff`>
kommando.
int till sträng
Alternativ Tillgängliga i diff Command
Alternativ | Beskrivning |
---|---|
| Utdataskillnader i kontextläge |
| Utdataskillnader i enhetligt läge (mer koncis) |
| Gör en skiftlägesokänslig jämförelse |
–ignorera-allt-utrymme | Ignorera blanksteg när du jämför linjer |
-kort | Utdata endast om filerna skiljer sig, inga detaljer |
-rekursiv | Jämför kataloger rekursivt |
inurl:.git/head | Visa utdata i ett format sida vid sida |
Praktisk implementering av hur man jämför filer rad för rad i Linux? :
Jämför två filer
Jämför filer rad för rad i Linux.
Låt oss säga att vi har två filer med namn a.txt och b.txt som innehåller 5 indiska stater.
cat a.txt cat b.txt>

visa innehåll i filer med hjälp av cat-kommandot
När vi nu tillämpar diff-kommandot utan något alternativ får vi följande utdata:
diff a.txt b.txt>

jämföra fil rad för rad i linux
Låt oss ta en titt på vad denna utdata betyder. Den första raden i diff output kommer att innehålla:
- Radnummer som motsvarar den första filen,
- En speciell symbol och
- Radnummer som motsvarar den andra filen.
Som i vårt fall, 0a1 som betyder efter rader 0 (i början av filen) måste du lägga till Tamil Nadu för att matcha den andra filen rad nummer 1. Den berättar sedan vad dessa rader är i varje fil föregås av symbolen:
- Rader som föregås av a < är rader från den första filen.
- Rader som föregås av > är rader från den andra filen.
- Nästa rad innehåller 2,3c3 vilket innebär att från rad 2 till rad 3 i den första filen måste ändras för att matcha rad nummer 3 i den andra filen. Den berättar sedan för oss de raderna med ovanstående symboler.
- De tre strecken (—) Separera bara raderna i fil 1 och fil 2.
Som en sammanfattning för att göra båda filerna identiska, lägg först till Tamil Nadu i den första filen alldeles i början för att matcha rad 1 i andra filen efter det ändra rad 2 och 3 i första filen, dvs. Uttar Pradesh och Kolkata med rad 3 i andra filen, dvs. Andhra Pradesh . Efter det ändra rad 5 i första filen, dvs. Jammu och Kashmir med rad 5 i andra filen, dvs. Uttar Pradesh .
Ta bort en rad i filer med diff-kommandot
Tänk på scenariot därdiff>
indikerar behovet av att radera en rad. Med tanke på två filer,a.txt>
ochb.txt>
:

visa innehåll i filer med hjälp av cat-kommandot
diff a.txt b.txt>

Ta bort en rad i fil
Här ovan utgång 3d2 betyder radera rad 3 i första filen dvs. Telangana så att båda filerna synkronisera upp på rad 2.
Visa skillnader i kontextläge
För att se skillnader i kontextläge, använd -c alternativ. Låt oss försöka förstå detta med exempel, vi har två filer fil1.txt och fil2.txt :

visa innehåll i filer med hjälp av cat-kommandot
diff -c file1.txt file2.txt>

Visa skillnad i kontextläge
I utgången ovan:
- Den första filen betecknas med `
***`>
, och den andra filen betecknas med `---`>
. - Linjen med `
***************`>
fungerar som en separator. - De två första raderna ger information om fil 1 och fil 2, som visar filnamn, ändringsdatum och ändringstid.
- Efter det, tre asterisker `
***`>
följs av ett radintervall från den första filen (raderna 1 till 4). Fyra asterisker `****`>
kom härnäst. Innehållet i den första filen visas sedan med specifika indikatorer:- Om en rad är oförändrad föregås den av två blanksteg.
- Om en rad behöver ändras föregås den av en symbol och ett mellanslag. Symbolerna indikerar:
-
`+`>
: En rad i den andra filen som ska läggas till den första filen för identiska resultat. -
`-`>
: En rad i den första filen som ska raderas för identiska resultat.
-
- Tre streck `
---`>
följs av ett radintervall från den andra filen (raderna 1 till 4), avgränsade med kommatecken. Fyra streck `----`>
följ och innehållet i den andra filen visas.
Visa skillnader i enhetligt läge
För att se skillnader i enhetligt läge, använd -i alternativ. Det liknar kontextläget men det visar ingen redundant information eller så visar den informationen i kortfattad form.

visa innehåll i filer med hjälp av cat-kommandot
diff -u file1.txt file2.txt>

Visningsskillnad i Unified-läge
I utgången ovan:
- Den första filen indikeras med `
---`>
, och den andra filen indikeras med `+++`>
. - De två första raderna ger information om fil 1 och fil 2, inklusive ändringsdatum och tid.
- Efter det, `
@@ -1>
`,`>
4 +1`>
,`>
4 @@`>
anger linjeintervallet för båda filerna. I det här fallet representerar den raderna 1 till 4 i båda filerna. - De efterföljande raderna representerar innehållet i filerna med specifika indikatorer:
- Oförändrade rader visas utan prefix.
- Rader i den första filen som ska raderas har prefix
->
. - Rader i den andra filen som ska läggas till har prefix
+>
.
I det här exemplet indikerar utdata att för att göra båda filerna identiska måste raderna som innehåller mv och comm tas bort från den första filen (file1.txt>
), och raderna som innehåller diff och comm måste läggas till.
Skiftlägesokänslig jämförelse mellan filer
Som standard, ` diff`>
är skiftlägeskänslig. För att göra en skiftlägesokänslig jämförelse, använd ` -i`>
alternativ:

visa innehåll i filer med hjälp av cat-kommandot
Dediff>
kommandot används sedan för att jämföra dessa filer med-i>
alternativet, vilket gör jämförelsen skiftlägesokänslig.
diff -i file1.txt file2.txt>

skiftlägesokänslig Jämföra
2d1>
: Detta indikerar en ändring på rad 2 i den första filen (file1.txt>
). Ded>
står för delete, och det står att radera rad 2 från den första filen.>
: Denna rad anger innehållet i raden som ska raderas. I det här fallet är det mv.
3a3>
: Detta indikerar ett tillägg på rad 3 i den första filen (file1.txt>
). Dea>
står för add, och det står att lägga till en linje vid position 3.>diff>
: Den här raden representerar innehållet som ska läggas till. I det här fallet är det diff.
Sammanfattningsvis berättar utdata för oss att för att göra båda filerna identiska (ignorera skiftläge), måste vi ta bort raden som innehåller mv från den första filen (file1.txt>
) och lägg till linjediff på samma position. Dediff>
kommando, med-i>
alternativet, möjliggör en skiftlägesokänslig jämförelse, vilket gör att den betraktar mv och MV som samma under analysen.
Visardiff>
Version
För att kontrollera versionen av ` diff`>
installerat på ditt system, använd ` --version`>
alternativ:
diff --version>

Visar version av diff-kommandot
Det här kommandot ger information om version, licensiering och författare till ` diff`>
verktyg.
Vanliga frågor om diff Command – FAQs
Hur använder jagdiff>
kommando för att jämföra två filer rad för rad i Linux?
För att jämföra två filer rad för rad med hjälp av
diff>
kommandot, använd helt enkelt följande syntax:diff file1.txt file2.txt>Det här kommandot visar skillnaderna mellan de två filerna och markerar tillägg, raderingar och ändringar.
Kan jag ignorera skillnader i blanksteg när jag jämför filer meddiff>
kommando?
Ja den
diff>
kommandot ger-w>
eller--ignore-all-space>
alternativet för att ignorera skillnader mellan blanksteg. Till exempel:sträng ersätt all javadiff -w file1.txt file2.txt>Detta är särskilt användbart när man jämför kodfiler där ändringar i indrag eller avstånd inte är signifikanta.
Hur kan jag skapa en patchfil med hjälp avdiff>
kommando?
För att skapa en korrigeringsfil som representerar skillnaderna mellan två filer, använd
-u>
alternativet och omdirigera utdata till en fil:diff -u file1.txt file2.txt>mypatch.patch>Den genererade patchfilen kan användas senare för att synkronisera en annan fil med ändringarna.
Vad är det enhetliga formatet idiff>
output, och hur skiljer det sig från kontextformatet?
Det enhetliga formatet (`
-u`>
alternativ) i `diff`>
output ger en mer kortfattad och läsbar representation av skillnader jämfört med kontextformatet (`-c`>
alternativ). Den visar ändringar i en mer kompakt form, vilket gör det lättare att förstå ändringar mellan filer.
Hur jämför jag rekursivt två kataloger i Linux med hjälp avdiff>
kommando?
För att rekursivt jämföra två kataloger och deras innehåll, använd `
-r`>
eller `--recursive`>
alternativet meddiff>
kommando:diff -r directory1/ directory2/>Detta kommando jämför alla filer i de angivna katalogerna och ger detaljerad information om skillnaderna.
Slutsats
I Linux-världen är det en vanlig uppgift för systemadministratörer och utvecklare att jämföra filer. Den ` diff>
kommando är ett praktiskt verktyg som hjälper till i denna process. Den här artikeln utforskar hur du använder ` diff`>
för att jämföra filer rad för rad i Linux. Den täcker den grundläggande syntaxen, viktiga alternativ som kontextläge och enhetligt läge, och praktiska applikationer som att skapa patchfiler och rekursivt jämföra kataloger. Oavsett om du felsöker kod eller säkerställer filintegritet, förstår och behärskar diff`>
kommandot är viktigt för effektiv filhantering i Linux.