Linux-opdrachten

diff Commandovoorbeelden in Linux

diff Commandovoorbeelden in Linux
De diff-opdracht is een analyse- of informatieve opdracht die verschillen tussen bestanden afdrukt, regel voor regel of mappen recursief analyseert, terwijl de gebruiker wordt geïnformeerd welke wijzigingen nodig zijn om bestanden gelijk te maken, dit punt is belangrijk om diff-uitgangen te begrijpen. Deze tutorial richt zich op de opdracht diff.

Maak voordat u begint twee bestanden met een willekeurige teksteditor (nano wordt in deze zelfstudie gebruikt) met dezelfde inhoud:

# nano diffsample1

Binnen plakken:

 LinuxHint publiceert de beste inhoud voor jou 

druk op CTRL+X en Y om op te slaan en af ​​te sluiten.

Maak een tweede bestand met de naam diffsample2 met dezelfde inhoud:

# nano diffsample2

Opmerking: let op spaties en tabs, bestanden moeten 100% gelijk zijn.

druk op CTRL+X en Y om op te slaan en af ​​te sluiten.

# diff diffsample1 diffsample2

Zoals je kunt zien is er geen uitvoer, je hoeft niets te doen om bestanden gelijk te maken omdat ze al gelijk zijn.

Laten we nu het bestand diffsample2 bewerken om iets te veranderen:

# nano diffsample2

Laten we dan het woord "inhoud" vervangen door "tips":

druk op CTRL+X en Y om op te slaan en af ​​te sluiten.

Voer nu uit:

# diff diffsample1 diffsample2

Laten we de uitvoer zien:

De uitvoer hierboven, "3c3" betekent "Lijn 3 van het eerste bestand van moet worden vervangen voor regel 3 van het tweede bestand". Het vriendelijke deel van de uitvoer is dat het ons laat zien welke tekst moet worden gewijzigd ("inhoud voor jou" voor "tips voor jou”)

Dit toont ons de referentie voor het commando diff is niet het eerste bestand maar het tweede, daarom moet het eerste bestand derde regel (de eerste 3) worden gewijzigd (C) als de derde regel van het tweede bestand (tweede 3).

Het commando diff kan 3 karakters tonen:

c: dit karakter instrueert a Verandering moet gedaan worden.
een: dit karakter instrueert iets moet zijn Toegevoegd.
d: dit personage instrueert dat iets moet zijn verwijderd.

De eerste cijfers vóór een karakter behoren tot het eerste bestand, terwijl de cijfers na de karakters tot het tweede bestand behoren.

Het symbool < belongs to the first file and the symbol > naar het tweede bestand dat als referentie wordt gebruikt.

Laten we de volgorde van de bestanden omkeren, in plaats van uitvoeren

# diff diffsample1 diffsample2

rennen:

# diff diffsample2 diffsample1

U kunt zien hoe de volgorde werd omgekeerd en nu wordt het diffsample1-bestand als referentie gebruikt en het geeft ons de opdracht om "tips voor u" te wijzigen in "inhoud voor u", dit was de vorige uitvoer:

Laten we nu het bestand diffsample1 als volgt bewerken:

Verwijder alle regels, behalve de eerste regel in het bestand diffsample1. Voer dan uit:

# diff diffsample2 diffsample1

Zoals je kunt zien, omdat we het bestand diffsample1 als referentie hebben gebruikt, moeten we om het bestand diffsample2 precies gelijk te maken, verwijderen (d) regel twee en drie (2,3) zoals in het eerste bestand en de eerste regels (1) zal gelijk zijn.

Laten we nu de volgorde omkeren en in plaats van "# diff diffsample2 diffsample1” rennen:

# diff diffsample1 diffsample2

Zoals u kunt zien, geeft het vorige voorbeeld ons de opdracht om te verwijderen, maar dit geeft ons de opdracht om toe te voegen (een) regels 2 en 3 na het eerste bestand eerste regel (1).

Laten we nu werken aan de hoofdlettergevoelige eigenschap van dit programma.

Bewerk het bestand diffsample2 zoals:

En bewerk het bestand diffsample1 als:

Het enige verschil zijn de hoofdletters in het bestand diffsample2. Laten we het nu opnieuw vergelijken met diff:

# diff diffsample1 diffsample2

Zoals je kunt zien diff gevonden verschillen, de hoofdletters, vermijden we dat diff hoofdletters detecteert, als we niet geïnteresseerd zijn in hoofdlettergevoelig door de toevoeging van de -ik keuze:

# diff -i diffsample1 diffsample2

Er zijn geen verschillen gevonden, de case-detectie is uitgeschakeld.

Laten we nu het uitvoerformaat wijzigen door de optie toe te voegen -jij gebruikt om uniforme uitvoer af te drukken:

Bovendien, tot op heden en tijd, wordt de uitvoer weergegeven met a - en + symbool wat moet worden verwijderd en wat moet worden toegevoegd om bestanden gelijk te maken.

Aan het begin van dit artikel zei ik dat spaties en tabs in beide bestanden gelijk moeten zijn, omdat ze ook worden gedetecteerd door het commando diff. Als we willen dat het commando diff spaties en tabs negeert, moeten we de -met wie keuze.

Open het bestand diffsample2 en voeg spaties en tabs toe:

Zoals je ziet heb ik een paar tabbladen toegevoegd na "de beste" in de tweede regel en ook spaties in alle regels, sluit, sla het bestand op en voer uit:

# diff diffsample1 diffsample2

Zoals je kunt zien zijn er verschillen gevonden, naast de hoofdletters. Laten we nu de optie toepassen  -met wie om diff opdracht te geven om lege spaties te negeren:

Zoals je ziet ondanks de tabulatie diff alleen gevonden als verschil de hoofdletters.
Laten we nu de optie -i opnieuw toevoegen:

#diff  -wi diffsample2 diffsample1

Het commando diff heeft tientallen beschikbare opties om toe te passen om te negeren, de uitvoer te wijzigen, kolommen te discrimineren indien aanwezig, enz. U kunt aanvullende informatie over deze opties krijgen met het man-commando, of op http://man7.org/linux/man-pages/man1/diff.1.html. Ik hoop dat je dit artikel met diff Command-voorbeelden in Linux nuttig vond. Blijf Linux volgen Hint voor meer tips en updates over Linux en netwerken.

Top 5 Game Capture-kaarten
We hebben allemaal gezien en genoten van streaming gameplays op YouTube. PewDiePie, Jakesepticye en Markiplier zijn slechts enkele van de beste gamers...
Hoe een spel op Linux te ontwikkelen
Tien jaar geleden zouden niet veel Linux-gebruikers voorspellen dat hun favoriete besturingssysteem ooit een populair spelplatform voor commerciële vi...
Open source-poorten van commerciële game-engines
Gratis, open source en platformonafhankelijke game-engine-recreaties kunnen worden gebruikt om zowel oude als enkele van de vrij recente gametitels te...