logo

Kuinka vertailla tiedostoja rivi riviltä Linuxissa | diff-komento

Linux-maailmassa tiedostojen hallinta ja vertailu on yleinen tehtävä sekä järjestelmänvalvojille että kehittäjille. Mahdollisuus verrata tiedostoja rivi riviltä on ratkaisevan tärkeää erojen tunnistamisessa, koodin virheenkorjauksessa ja tietojen eheyden varmistamisessa. Yksi tehokas työkalu, joka helpottaa tätä prosessia, ondiff>komento. Tässä artikkelissa tutkimme, kuinka käyttäädiff>komento vertailla tiedostoja rivi riviltä Linuxissa.

Sisällysluettelo



Diff-komennon ymmärtäminen

diff tarkoittaa ero .Thediff>komento on monipuolinen apuohjelma, joka on esiasennettu useimpiin Linux-jakeluihin. Sen ensisijainen tarkoitus on vertailla kahden tiedoston sisältöä ja näyttää niiden väliset erot. Komento tarjoaa kattavan tavan korostaa muutoksia, lisäyksiä ja poistoja selkeässä ja luettavassa muodossa.

Tätä komentoa käytetään tiedostojen erojen näyttämiseen vertaamalla tiedostoja rivi riviltä. Toisin kuin muut jäsenet, cmp ja comm , se kertoo meille, mitkä yhden tiedoston rivit on muutettava, jotta tiedostot ovat identtisiä.

Tärkeintä on muistaa se ero käyttää tiettyjä erikoissymbolit ja ohjeet joita tarvitaan, jotta kaksi tiedostoa olisivat identtisiä. Se kertoo ohjeet ensimmäisen tiedoston muuttamiseksi niin, että se vastaa toista tiedostoa.



Diff-komennon perussyntaksi

Kohteen perussyntaksidiff>komento on seuraava:

diff [OPTION]... FILE1 FILE2>

Tässä, ` FILE1`> ja ` FILE2`> ovat kaksi tiedostoa, joita haluat verrata.

` OPTION`> lipun avulla voit mukauttaa ` diff`> komento.



Vaihtoehdot saatavilla eri komennossa

Vaihtoehto

Kuvaus

-c>tai--context>

muuten jos java

Lähtöerot kontekstitilassa

-u>tai--unified>

Tuotoserot yhdistetyssä tilassa (tiiviimpi)

-i>tai--ignore-case>

Suorita vertailu, jossa kirjainkoolla ei ole merkitystä

-jätä huomioimatta kaikki-avaruus

Älä välitä välilyöntejä verrattaessa rivejä

-lyhyt

Tulosta vain tiedostot eroavat toisistaan, ei yksityiskohtia

-rekursiivinen

Vertaa hakemistoja rekursiivisesti

-y>tai--side-by-side>

Näytä tulos vierekkäin

Käytännön toteutus Miten vertailla tiedostoja rivi riviltä Linuxissa? :

Kahden tiedoston vertailu

Vertaa tiedostoja rivi riviltä Linuxissa.

java merkkijono concat

Oletetaan, että meillä on kaksi tiedostoa, joissa on nimi a.txt ja b.txt sisältää 5 Intian osavaltiota.

cat a.txt cat b.txt>
tiedostojen sisällön näyttäminen cat-komennolla

tiedostojen sisällön näyttäminen cat-komennolla

Nyt kun käytät diff-komentoa ilman vaihtoehtoja, saamme seuraavan tuloksen:

diff a.txt b.txt>
tiedostojen vertailu rivi riviltä linuxissa

tiedostojen vertailu rivi riviltä linuxissa

Katsotaanpa, mitä tämä tulos tarkoittaa. Ensimmäinen rivi ero tulos sisältää:

  • ensimmäistä tiedostoa vastaavat rivinumerot,
  • Erityinen symboli ja
  • Toista tiedostoa vastaavat rivinumerot.

Kuten meidän tapauksessamme, 0a1 joka tarkoittaa jälkeen rivit 0 (hyvin tiedoston alussa), sinun on lisättävä Tamil Nadu vastaamaan toista tiedoston rivinumeroa 1. Se kertoo meille, mitkä rivit ovat kussakin tiedostossa, jota edeltää symboli:

  • Rivit, joita edeltää a < ovat rivejä ensimmäisestä tiedostosta.
  • Rivit, joita edeltää > ovat rivejä toisesta tiedostosta.
  • Seuraava rivi sisältää 2,3c3 mikä tarkoittaa, että ensimmäisen tiedoston rivi 2 riville 3 on muutettava vastaamaan toisen tiedoston riviä 3. Sitten se kertoo meille nuo rivit yllä olevilla symboleilla.
  • Kolme viivaa (-) erota vain tiedoston 1 ja 2 rivit.

Yhteenvetona, jotta molemmat tiedostot ovat identtisiä, lisää ensin Tamil Nadu ensimmäisessä tiedostossa aivan alussa vastaamaan toisen tiedoston riviä 1 sen jälkeen muuta ensimmäisen tiedoston riviä 2 ja 3, eli. Uttar Pradesh ja Kolkata toisen tiedoston rivillä 3, ts. Andhra Pradesh . Muuta tämän jälkeen ensimmäisen tiedoston riviä 5 eli Jammu ja Kashmir toisen tiedoston rivillä 5, ts. Uttar Pradesh .

Rivin poistaminen tiedostoista diff-komennolla

Mieti skenaariota missädiff>ilmaisee tarpeen poistaa rivi. Kun annetaan kaksi tiedostoa,a.txt>jab.txt>:

tiedostojen sisällön näyttäminen cat-komennolla

tiedostojen sisällön näyttäminen cat-komennolla

diff a.txt b.txt>
Rivin poistaminen tiedostosta

Rivin poistaminen tiedostosta

osavaltioiden luettelo

Tässä tuotoksen yläpuolella 3d2 tarkoittaa ensimmäisen tiedoston rivin 3 poistamista, ts. Telangana niin että molemmat tiedostot synkronoida rivillä 2.

Erojen tarkasteleminen kontekstitilassa

Jos haluat tarkastella eroja kontekstitilassa, käytä -c vaihtoehto. Yritetään ymmärtää tämä esimerkillä, meillä on kaksi tiedostoa tiedosto1.txt ja tiedosto2.txt :

tiedostojen sisällön näyttäminen cat-komennolla

tiedostojen sisällön näyttäminen cat-komennolla

diff -c file1.txt file2.txt>
Eron katselu kontekstitilassa

Eron katselu kontekstitilassa

Yllä olevassa lähdössä:

  • Ensimmäinen tiedosto on merkitty ` ***`> , ja toinen tiedosto on merkitty ` ---`> .
  • Rivi, jossa on ` ***************`> toimii erottimena.
  • Kaksi ensimmäistä riviä tarjoavat tietoja tiedostosta 1 ja tiedostosta 2, ja niissä näkyy tiedoston nimi, muokkauspäivämäärä ja muokkausaika.
  • Sen jälkeen kolme tähteä ` ***`> seuraa riviväli ensimmäisestä tiedostosta (rivit 1–4). Neljä tähteä ` ****`> tule seuraavaksi. Ensimmäisen tiedoston sisältö näytetään sitten erityisillä ilmaisimilla:
    • Jos rivi on muuttumaton, sen edessä on kaksi välilyöntiä.
    • Jos riviä on muutettava, sen eteen lisätään symboli ja välilyönti. Symbolit osoittavat:
      • `+`> : Rivi toisessa tiedostossa, joka lisätään ensimmäiseen tiedostoon identtisten tulosten saamiseksi.
      • `-`> : Ensimmäisen tiedoston rivi, joka poistetaan identtisten tulosten saamiseksi.
  • Kolme viivaa ` ---`> seuraa riviväli toisesta tiedostosta (rivit 1–4), erotettuna pilkulla. Neljä viivaa ` ----`> seuraa, ja toisen tiedoston sisältö tulee näkyviin.

Erojen tarkasteleminen yhdistetyssä tilassa

Voit tarkastella eroja yhdistetyssä tilassa käyttämällä -sisään vaihtoehto. Se on samanlainen kuin kontekstitila, mutta se ei näytä ylimääräisiä tietoja tai se näyttää tiedot tiiviissä muodossa.

tiedostojen sisällön näyttäminen cat-komennolla

tiedostojen sisällön näyttäminen cat-komennolla

diff -u file1.txt file2.txt>
Eron katselu yhdistetyssä tilassa

Eron katselu yhdistetyssä tilassa

Yllä olevassa lähdössä:

  • Ensimmäinen tiedosto on merkitty ` ---`> , ja toisen tiedoston ilmaisee ` +++`> .
  • Kaksi ensimmäistä riviä tarjoavat tietoja tiedostosta 1 ja tiedostosta 2, mukaan lukien muokkauspäivämäärä ja -aika.
  • Sen jälkeen ` @@ -1> `,`> 4 +1`> ,`> 4 @@`> ilmaisee rivivälin molemmille tiedostoille. Tässä tapauksessa se edustaa rivejä 1–4 molemmissa tiedostoissa.
  • Seuraavat rivit edustavat tiedostojen sisältöä erityisillä ilmaisimilla:
    • Muuttumattomat rivit näytetään ilman etuliitettä.
    • Ensimmäisen poistettavan tiedoston rivien etuliitteenä on->.
    • Toisen lisättävän tiedoston rivien etuliitteenä on+>.

Tässä esimerkissä tulos osoittaa, että jotta molemmat tiedostot olisivat identtisiä, mv:n ja comm:n sisältävät rivit on poistettava ensimmäisestä tiedostosta (file1.txt>), ja rivit, jotka sisältävät diff ja comm, on lisättävä siihen.

Kirjainkoolla ei eroa tiedostojen vertailu

Oletuksena ` diff`> kirjainkoolla on merkitystä. Jos haluat tehdä vertailun, jossa kirjainkoolla ei ole merkitystä, käytä ` -i`> vaihtoehto:

tiedostojen sisällön näyttäminen cat-komennolla

tiedostojen sisällön näyttäminen cat-komennolla

Thediff>komentoa käytetään sitten näiden tiedostojen vertaamiseen-i>-vaihtoehto, mikä tekee vertailusta kirjainkoolla eroon.

diff -i file1.txt file2.txt>
kirjainkoolla ei ole merkitystä Vertailu

kirjainkoolla ei ole merkitystä Vertailu

  • 2d1>: Tämä osoittaa muutoksen ensimmäisen tiedoston rivillä 2 (file1.txt>). Thed>tarkoittaa delete, ja se kehottaa poistamaan rivin 2 ensimmäisestä tiedostosta.
    • >: Tämä rivi tarkoittaa poistettavan rivin sisältöä. Tässä tapauksessa se on mv.
  • 3a3>: Tämä osoittaa lisäyksen ensimmäisen tiedoston riville 3 (file1.txt>). Thea>tarkoittaa add, ja se kehottaa lisäämään rivin kohtaan 3.
    • >diff>: Tämä rivi edustaa lisättävää sisältöä. Tässä tapauksessa se on eri.

Yhteenvetona tulos kertoo meille, että jotta molemmat tiedostot olisivat identtisiä (jättäen huomioimatta kirjainkokoa), meidän on poistettava mv sisältävä rivi ensimmäisestä tiedostosta (file1.txt>) ja lisää riviero samaan kohtaan. Thediff>komennon kanssa-i>-vaihtoehto mahdollistaa vertailun, jossa kirjainkoolla ei ole merkitystä, joten se pitää mv:tä ja MV:tä samana analyysin aikana.

Näytetäändiff>Versio

Tarkistaaksesi version ` diff`> asennettuna järjestelmään, käytä ` --version`> vaihtoehto:

diff --version>
Näytetään diff-komennon versio

Näytetään diff-komennon versio

Tämä komento antaa tietoja ` diff`> apuohjelma.

Usein kysytyt kysymykset diff Commandista – UKK

Kuinka käytändiff>komento vertailla kahta tiedostoa rivi riviltä Linuxissa?

Vertaaksesi kahta tiedostoa rivi riviltä käyttämällädiff>-komentoa, käytä seuraavaa syntaksia:

java on sama
diff file1.txt file2.txt>

Tämä komento näyttää erot kahden tiedoston välillä korostaen lisäyksiä, poistoja ja muutoksia.

Voinko jättää huomioimatta välilyöntejä verrattaessa tiedostojadiff>komento?

Kyllädiff>komento tarjoaa-w>tai--ignore-all-space>vaihtoehto jättää välilyönnit huomioimatta. Esimerkiksi:

diff -w file1.txt file2.txt>

Tämä on erityisen hyödyllistä vertailtaessa kooditiedostoja, joissa sisennysten tai välien muutokset eivät ole merkittäviä.

Kuinka voin luoda korjaustiedoston käyttämällädiff>komento?

Voit luoda korjaustiedoston, joka edustaa kahden tiedoston välisiä eroja, käyttämällä-u>vaihtoehto ja ohjaa tulos tiedostoon:

diff -u file1.txt file2.txt>mypatch.patch>

Luotua korjaustiedostoa voidaan käyttää myöhemmin toisen tiedoston synkronoimiseksi muutosten kanssa.

Missä yhtenäinen muoto ondiff>lähtö, ja miten se eroaa kontekstimuodosta?

Yhtenäinen muoto (` -u`> vaihtoehto) kohdassa ` diff`> tulos tarjoaa tiiviimmän ja luettavamman esityksen eroista kontekstimuotoon verrattuna (` -c`> vaihtoehto). Se näyttää muutokset tiiviimmässä muodossa, mikä helpottaa tiedostojen välisten muutosten ymmärtämistä.

Kuinka vertaan rekursiivisesti kahta hakemistoa Linuxissa käyttämällädiff>komento?

Vertaaksesi rekursiivisesti kahta hakemistoa ja niiden sisältöä, käytä ` -r`> tai ` --recursive`> vaihtoehto kanssadiff>komento:

diff -r directory1/ directory2/>

Tämä komento vertaa kaikkia määritetyissä hakemistoissa olevia tiedostoja ja antaa yksityiskohtaisia ​​tietoja eroista.

Johtopäätös

Linux-maailmassa tiedostojen vertailu on yleinen tehtävä järjestelmänvalvojille ja kehittäjille. ` diff> komento on kätevä työkalu, joka auttaa tässä prosessissa. Tässä artikkelissa kerrotaan, kuinka ` diff`> vertailla tiedostoja rivi riviltä Linuxissa. Se kattaa perussyntaksin, tärkeät vaihtoehdot, kuten kontekstitilan ja yhdistetyn tilan, sekä käytännön sovellukset, kuten korjaustiedostojen luomisen ja hakemistojen rekursiivisen vertailun. Olipa kyseessä koodin virheenkorjaus tai tiedoston eheyden varmistaminen, ` diff`> komento on välttämätön tehokkaalle tiedostojen hallinnalle Linuxissa.