File Comparison (Diff) Verktøy for Linux
Programmører, webutviklere og selvforfattere må ofte sammenligne ulike versjoner av samme kode eller tekst for å holde oversikt over endringer. En effektiv måte å gjøre dette på er med et diff-verktøy - et program som sammenligner filer eller mapper, viser forskjeller mellom dem og hjelper deg med å opprette en ny fil ved å slå sammen eller lime opp sine versjoner. Generelt kan du sammenligne filer på Linux, enten med et kommandolinjeverktøy eller ved hjelp av et frittstående program.
Diff, colordiff og wdiff
diff
Kommandolinjeverktøyet kalles diff
er en del av "diffutils" -pakken som finnes i lagerene til alle store Linux-distribusjoner. Det er et enkelt verktøy som sammenligner filer linje for linje og kan også sammenligne filer i to mapper. Hvis valgte filer er identiske, vil diff ikke skrive ut noen utdata, og du kan tilpasse alternativene (for eksempel å ignorere hvitt mellomrom eller brevfall).
Den generelle syntaksen er
diff-opsjon filnavn1 filnavn2
Resultatene kan vises i to kolonner med -y
eller --side-by-side
. Få hele listen over diff-alternativer ved å skrive:
diff - hjelp
Pakken "diffutils" inneholder også diff3
- et verktøy som kan sammenligne tre filer og slå sammen tre versjoner av en fil. En flott guide for å få mest mulig ut av diff finnes på den offisielle nettsiden.
Colordiff
Colordiff er teknisk en "wrapper" eller et skript som endrer utdataene fra diff ved å fargelegge det i henhold til dine preferanser i konfigurasjonsfilen ("/ etc / colordiffrc" eller "/home/user/.colordiffrc"). Colordiff-pakken er tilgjengelig i repositoriene av de fleste distribusjoner.
Colordiff har de samme alternativene som diff, og du kan bruke den enten direkte ved å skrive:
colordiff-opsjoner filnavn1.txt filnavn2.txt
eller ved å pipere utgangen av diff til den:
diff -u filnavn1.txt filnavn2.txt | colordiff
Wdiff
Et annet lignende og litt mer spesialisert verktøy er wdiff
som kan sammenligne filer ord per ord (det definerer et ord som noe omgitt av hvitt mellomrom). Wdiff kan ignorere tilfelle ( -i
), gi statistikk ( -s
) om endringer i bestemte filer, og understreke forskjeller med formatering ( -p
). Du kan også kombinere colordiff og wdiff for å få en fargekodd oversikt over ordforskjeller mellom filer:
wdiff -n filnavn1.txt filnavn2.txt | colordiff
Merk at du må legge inn hele banen hvis filene ikke er i den aktive mappen. For å finne ut mer om wdiff, besøk den offisielle nettsiden.
Diff-modi i Vim og Emacs
Populære tekstredaktører Vim og Emacs har begge en innebygd diff-modus. For å aktivere det i Vim, kan du starte programmet med vimdiff
kommandoen og legge til opptil fire filer for å sammenligne:
vimdiff file1 file2 [file3 [file4]]
Vim åpner hver fil i et eget vindu og fremhever forskjellene. Du kan konfigurere hvordan du deler hvert vindu for en bedre oversikt.
Emacs-brukere kan velge mellom en diff-utvidelse (kalt "hovedmodus") eller Ediff, en litt mer avansert modus som lar deg interaktivt endre sammenlikne filer. På samme måte som Vim, kan Emacs vise filer i separate vinduer, side om side, og markere forskjellene. Du kan også bruke den til å fusjonere filer, og det fungerer også med komprimerte filer.
Begge tekstredaktørene har relativt komplisert syntaks som krever litt læring, men det lønner seg siden de er veldig kraftige og grundig tilpassbare.
Kdiff3
Kdiff3 er en grafisk frontend til diff, noe som betyr at den er avhengig av diff og tilbyr alle sine muligheter. Den lar deg sammenligne to filer til en basefil, og slå sammen, splitt og delta i hele mapper, filer eller bare utvalgte deler av teksten. Kdiff3 integreres godt med KDE (støtter Dolphin service menyer), men det vil fungere på alle Linux-distribusjoner, Windows og Mac OS X. Dialogboksen Innstillinger -> Konfigurer Kdiff3 lar deg sette parametere for filsammenligning i mapper (etter dato, størrelse, binær sammenligning eller fullt innhold) og mellom filer (ignorere saken, tall og hvitt mellomrom). Du kan bytte ordlås og linjenumre for bedre oversikt og justere fargeinnstillinger for å markere forskjellene.
Det flotte med Kdiff3 er at du lar deg lime inn tekst fra en hvilken som helst fil direkte inn i hovedvinduet, og eliminerer behovet for å lage filer når du bare vil sammenligne tekst "on-the-fly". En detaljert Kdiff3-håndbok er tilgjengelig på nettet.
diffuse
Ved første øyekast virker det enkelt, men Diffuse er like kraftig som andre verktøy på denne listen. Det kan sammenligne et ubegrenset antall filer i en side ved sidevisning og oppsummere forskjellene. Du kan redigere filer direkte fra Diffuse og utføre fusjoner og linje matching. Den støtter også (begrenset) syntaksutheving og tilbyr integrering med flere versjonskontrollsystemer - inkludert Git, Mercurial og Subversion - for å hjelpe deg med å beholde filer i synkronisering. Diffuse arbeider på Linux, Windows og Mac OS X, og du kan laste ned installasjonspakken fra prosjektets nettsted.
Diffmerge
Dette programmet fungerer på Linux, Windows og OS X, integrerer godt med Windows Utforsker, og tilbyr installasjonspakker for noen distribusjoner. Du kan redigere filer innenfor Diffmerge, automatisk fusjonere filversjoner og eksportere forskjeller til en ny fil. Det kan sammenligne opptil tre filer og to mapper og vise om filene er identiske, noe som kan være nyttig når du kontrollerer om en rsync-sikkerhetskopiering ble utført på riktig måte.
Innstillingsdialogen lar deg definere egendefinerte regler for håndtering av ulike filtyper. Diffmerge er gratis, men det vil av og til be om en betalt registreringsnøkkel. Dette kan slå noen brukere bort heldigvis kan de velge et annet verktøy fra denne listen siden de alle tilbyr mer eller mindre de samme alternativene.
meld
Meld pakker funksjoner fra andre diff verktøy til et Python-bygget grensesnitt. Du kan laste ned kilden og Windows-versjonen, og finn pakken i depotene hvis du er en Ubuntu-, Fedora- eller SUSE-bruker. En kul ting om Meld er at du ikke trenger å installere den - bare kjør kjørbar og bruk den som en bærbar app.
Meld støtter filredigering, filtrering med vanlige uttrykk, sammenligning og sammenslåing av tre filer, og sammenligning av to eller tre mapper og innholdet, og gir også nyttig visualisering av forskjeller ved hjelp av piler og fargekoding. Hvis du bruker et versjonskontrollsystem som Git, Mercurial eller SVN, kan Meld administrere filene dine, se etter endringer og utføre forpliktelser og oppdateringer. Meldingen oppdateres jevnlig, så vi kan håpe på nye funksjoner i fremtidige versjoner.
Andre muligheter
Hvis du ikke har lyst til å installere en ny applikasjon til dette formålet, og du ikke trenger avanserte funksjoner for sammenligning av filer, kan du prøve noen av de mange online diff-verktøyene som er gratis og bare krever en nettleser.
Bruker du et diff-verktøy som ikke er på denne listen? Fortell oss om det i kommentarene.
Bildetekst: Teaser bildekilde