I Linux-verdenen er administration og sammenligning af filer en almindelig opgave for systemadministratorer og udviklere. Evnen til at sammenligne filer linje for linje er afgørende for at identificere forskelle, fejlfinde kode og sikre dataintegriteten. Et stærkt værktøj, der letter denne proces, erdiff>kommando. I denne artikel vil vi undersøge, hvordan du brugerdiff>kommando til at sammenligne filer linje for linje i Linux.
Indholdsfortegnelse
- Grundlæggende syntaks for diff-kommando
- Indstillinger tilgængelige i diff Command
- Praktisk implementering af hvordan man sammenligner filer linje for linje i Linux? :
- Sammenligning af to filer
- Sletning af en linje i filer ved hjælp af diff-kommando
- Visning af forskelle i konteksttilstand
- Visning af forskelle i Unified Mode
- Uafhængig af store og små bogstaver i sammenligning mellem filer
- Viser forskellig version
Forstå forskellen Kommando
diff står for forskel .Detdiff>kommando er et alsidigt værktøj, der er forudinstalleret på de fleste Linux-distributioner. Dens primære formål er at sammenligne indholdet af to filer og vise forskellene mellem dem. Kommandoen giver en omfattende måde at fremhæve ændringer, tilføjelser og sletninger i et klart og læsbart format.
Denne kommando bruges til at vise forskellene i filerne ved at sammenligne filerne linje for linje. I modsætning til sine medmedlemmer, cmp og komm , det fortæller os, hvilke linjer i en fil der skal ændres for at gøre de to filer identiske.
Det vigtige at huske er det diff bruger visse specielle symboler og instruktioner som er nødvendige for at gøre to filer identiske. Den fortæller dig instruktionerne om, hvordan du ændrer den første fil, så den matcher den anden fil.
Grundlæggende syntaks for diff-kommando
Den grundlæggende syntaks fordiff>kommandoen er som følger:
diff [OPTION]... FILE1 FILE2>
Her, ` FILE1`> og ` FILE2`> er de to filer, du vil sammenligne.
Den ` OPTION`> flag giver dig mulighed for at tilpasse adfærden for ` diff`> kommando.
Indstillinger tilgængelige i diff Command
| Mulighed | Beskrivelse |
|---|---|
|
| Outputforskelle i konteksttilstand |
|
| Outputforskelle i unified mode (mere kortfattet) |
|
| Udfør en sammenligning uden forskel på store og små bogstaver |
| –ignorer-al-space | Ignorer mellemrum, når du sammenligner linjer |
| -kort | Output kun, om filer er forskellige, ingen detaljer |
| -rekursiv | Sammenlign mapper rekursivt |
|
| Vis outputtet i et side-by-side-format |
Praktisk implementering af hvordan man sammenligner filer linje for linje i Linux? :
Sammenligning af to filer
Sammenlign filer linje for linje i Linux.
Lad os sige, at vi har to filer med navne a.txt og b.txt indeholdende 5 indiske stater.
cat a.txt cat b.txt>

visning af indhold af filer ved hjælp af kat-kommando
Nu, ved at anvende diff-kommando uden nogen mulighed, får vi følgende output:
diff a.txt b.txt>

sammenligne fil linje for linje i linux
Lad os tage et kig på, hvad dette output betyder. Den første linje af diff output vil indeholde:
- Linjenumre svarende til den første fil,
- Et særligt symbol og
- Linjenumre svarende til den anden fil.
Ligesom i vores tilfælde, 0a1 hvilket betyder efter linjer 0 (i begyndelsen af filen) du skal tilføje Tamil Nadu for at matche den anden fillinje nummer 1. Den fortæller os derefter, hvad disse linjer er i hver fil efter symbolet:
- Linjer foranstillet af en < er linjer fra den første fil.
- Linjer indledt af > er linjer fra den anden fil.
- Næste linje indeholder 2,3c3 hvilket betyder, at fra linje 2 til linje 3 i den første fil skal ændres for at matche linje nummer 3 i den anden fil. Den fortæller os så de linjer med ovenstående symboler.
- De tre streger (—) bare adskille linjerne i fil 1 og fil 2.
Som en oversigt for at gøre begge filer identiske, skal du først tilføje Tamil Nadu i den første fil helt i begyndelsen for at matche linje 1 i anden fil, derefter ændres linje 2 og 3 i første fil, dvs. Uttar Pradesh og Kolkata med linje 3 i anden fil, dvs. Andhra Pradesh . Derefter ændres linje 5 i første fil, dvs. Jammu og Kashmir med linje 5 i anden fil, dvs. Uttar Pradesh .
Sletning af en linje i filer ved hjælp af diff-kommando
Overvej scenariet hvordiff>angiver behovet for at slette en linje. I betragtning af to filer,a.txt>ogb.txt>:

visning af indhold af filer ved hjælp af kat-kommando
diff a.txt b.txt>

Sletning af en linje i fil
Her ovenfor output 3d2 betyder sletning af linje 3 i første fil, dvs. Telangana så begge filer synkronisere op på linje 2.
Visning af forskelle i konteksttilstand
For at se forskelle i konteksttilstand skal du bruge -c mulighed. Lad os prøve at forstå dette med eksempel, vi har to filer fil1.txt og fil2.txt :
konverter streng til dato

visning af indhold af filer ved hjælp af kat-kommando
diff -c file1.txt file2.txt>

Se forskel i konteksttilstand
I ovenstående output:
- Den første fil er betegnet med `
***`>, og den anden fil er angivet med `---`>. - Linjen med `
***************`>fungerer som en separator. - De første to linjer giver information om fil 1 og fil 2, der viser filnavnet, ændringsdatoen og ændringstidspunktet.
- Efter det, tre stjerner `
***`>efterfølges af et linjeinterval fra den første fil (linje 1 til 4). Fire stjerner `****`>kom næste. Indholdet af den første fil vises derefter med specifikke indikatorer:- Hvis en linje er uændret, foranstilles den af to mellemrum.
- Hvis en linje skal ændres, foranstilles den af et symbol og et mellemrum. Symbolerne angiver:
-
`+`>: En linje i den anden fil, der skal tilføjes til den første fil for identiske resultater. -
`-`>: En linje i den første fil, der skal slettes for identiske resultater.
-
- Tre streger `
---`>efterfølges af et linjeinterval fra den anden fil (linje 1 til 4), adskilt af et komma. Fire streger `----`>følg, og indholdet af den anden fil vises.
Visning af forskelle i Unified Mode
For at se forskelle i samlet tilstand skal du bruge -i mulighed. Det ligner konteksttilstand, men det viser ingen overflødige oplysninger eller det viser oplysningerne i kortfattet form.

visning af indhold af filer ved hjælp af kat-kommando
diff -u file1.txt file2.txt>

Visningsforskel i Unified-tilstand
I ovenstående output:
- Den første fil er angivet med `
---`>, og den anden fil er angivet med `+++`>. - De første to linjer giver information om fil 1 og fil 2, inklusive ændringsdato og -klokkeslæt.
- Efter det, `
@@ -1>`,`>4 +1`>,`>4 @@`>angiver linjeintervallet for begge filer. I dette tilfælde repræsenterer det linje 1 til 4 i begge filer. - De efterfølgende linjer repræsenterer indholdet af filerne med specifikke indikatorer:
- Uændrede linjer vises uden præfiks.
- Linjer i den første fil, der skal slettes, er foranstillet
->. - Linjer i den anden fil, der skal tilføjes, er foranstillet
+>.
I dette eksempel angiver outputtet, at for at gøre begge filer identiske, skal linjerne, der indeholder mv og comm, slettes fra den første fil (file1.txt>), og linjerne, der indeholder diff og comm, skal tilføjes til den.
Uafhængig af store og små bogstaver i sammenligning mellem filer
Som standard, ` diff`> er store og små bogstaver. For at udføre en sammenligning uden store og små bogstaver skal du bruge ` -i`> mulighed:

visning af indhold af filer ved hjælp af kat-kommando
Detdiff>kommandoen bruges derefter til at sammenligne disse filer med-i>mulighed, hvilket gør sammenligningen ufølsom over for store og små bogstaver.
diff -i file1.txt file2.txt>

Uafhængig af store og små bogstaver Sammenligning
2d1>: Dette indikerer en ændring i linje 2 i den første fil (file1.txt>). Detd>står for slet, og der står at slette linje 2 fra den første fil.>: Denne linje angiver indholdet af den linje, der skal slettes. I dette tilfælde er det mv.
3a3>: Dette indikerer en tilføjelse i linje 3 i den første fil (file1.txt>). Deta>står for add, og der står at tilføje en linje ved position 3.>diff>: Denne linje repræsenterer det indhold, der skal tilføjes. I dette tilfælde er det diff.
Sammenfattende fortæller outputtet os, at for at gøre begge filer identiske (ignorerer store og små bogstaver), skal vi slette linjen, der indeholder mv fra den første fil (file1.txt>) og tilføj linjeforskellen på samme position. Detdiff>kommando, med-i>mulighed, giver mulighed for en case-ufølsom sammenligning, hvilket gør, at den betragter mv og MV som de samme under analysen.
Viserdiff>Version
For at kontrollere versionen af ` diff`> installeret på dit system, skal du bruge ` --version`> mulighed:
diff --version>

Viser version af diff-kommando
Denne kommando giver information om versionen, licenserne og forfatterne af ` diff`> nytte.
Ofte stillede spørgsmål om diff Command – ofte stillede spørgsmål
Hvordan bruger jegdiff>kommando til at sammenligne to filer linje for linje i Linux?
For at sammenligne to filer linje for linje ved hjælp af
diff>kommando, skal du blot bruge følgende syntaks:diff file1.txt file2.txt>Denne kommando viser forskellene mellem de to filer og fremhæver tilføjelser, sletninger og ændringer.
Kan jeg ignorere mellemrumsforskelle, mens jeg sammenligner filer meddiff>kommando?
Ja, den
diff>kommandoen giver-w>eller--ignore-all-space>mulighed for at ignorere mellemrumsforskelle. For eksempel:diff -w file1.txt file2.txt>Dette er især nyttigt, når man sammenligner kodefiler, hvor ændringer i indrykning eller mellemrum ikke er signifikante.
Hvordan kan jeg oprette en patch-fil ved hjælp afdiff>kommando?
For at oprette en patch-fil, der repræsenterer forskellene mellem to filer, skal du bruge
-u>mulighed og omdiriger outputtet til en fil:diff -u file1.txt file2.txt>mypatch.patch>Den genererede patch-fil kan anvendes senere for at synkronisere en anden fil med ændringerne.
Hvad er det forenede format idiff>output, og hvordan adskiller det sig fra kontekstformatet?
Det forenede format (`
-u`>option) i `diff`>output giver en mere kortfattet og læsbar repræsentation af forskelle sammenlignet med kontekstformatet (`-c`>mulighed). Det viser ændringer i en mere kompakt form, hvilket gør det lettere at forstå ændringer mellem filer.
Hvordan sammenligner jeg rekursivt to mapper i Linux ved hjælp afdiff>kommando?
For rekursivt at sammenligne to mapper og deres indhold skal du bruge `
-r`>eller `--recursive`>mulighed meddiff>kommando:diff -r directory1/ directory2/>Denne kommando sammenligner alle filer i de angivne mapper og giver detaljerede oplysninger om forskellene.
Konklusion
I Linux-verdenen er sammenligning af filer en almindelig opgave for systemadministratorer og udviklere. Den ` diff> kommando er et praktisk værktøj, der hjælper i denne proces. Denne artikel undersøger, hvordan du bruger ` diff`> at sammenligne filer linje for linje i Linux. Det dækker den grundlæggende syntaks, vigtige muligheder som konteksttilstand og unified mode, og praktiske applikationer såsom oprettelse af patch-filer og rekursiv sammenligning af mapper. Uanset om du fejlretter kode eller sikrer filintegritet, forstår og mestrer du diff`> kommando er afgørende for effektiv filhåndtering i Linux.