Android

Hajautettu komento linuxissa

Sisällysluettelo:

Anonim

diff on komentorivityökalu, jonka avulla voit verrata kahta tiedostoa riviltä. Se voi myös verrata hakemistojen sisältöä.

diff komentoa käytetään yleisimmin korjaustiedoston luomiseen, joka sisältää erot yhden tai useamman tiedoston välillä, joita voidaan käyttää patch komennolla.

Kuinka käyttää diff komentoa

diff komennon syntaksi on seuraava:

diff… FILES

diff komento voi näyttää ulostulon useissa muodoissa normaalin, kontekstin ja yhtenäisen muodon ollessa yleisimmät. Tuloste sisältää tietoja siitä, mitkä tiedostojen rivit on muutettava, jotta niistä tulee identtisiä. Jos tiedostot täsmäävät, tulostusta ei tuoteta.

Tallenna komentoulos tiedostoon käyttämällä uudelleenohjausoperaattoria:

diff file1 file2 > patch

, käytämme seuraavia kahta tiedostoa selittämään, miten diff komento toimii:

tiedosto1

Ubuntu Arch Linux Debian CentOS Fedora tdsto2

Kubuntu Ubuntu Debian Arch Linux Centos Fedora

Normaali muoto

Yksinkertaisimmassa muodossaan, kun diff komento suoritetaan kahdessa tekstitiedostossa ilman vaihtoehtoa, se tuottaa tulosteen normaalimuodossa:

diff file1 file2

Tulos näyttää tältä:

0a1 > Kubuntu 2d2 < Arch Linux 4c4, 5 < CentOS --- > Arch Linux > Centos

Normaali lähtömuoto koostuu yhdestä tai useammasta osiosta, jotka kuvaavat erot. Jokainen osa näyttää tältä:

change-command < from-file-line… --- > to-file-line…

0a1 , 0a1 ja 4c4, 5 ovat 4c4, 5 . Jokainen muutoskomento sisältää seuraavat vasemmalta oikealle:

  • Ensimmäisen tiedoston rivinumero tai rivialue.Erityinen muutosmerkki. Toisen tiedoston rivinumero tai rivialue.

Muutosmerkki voi olla yksi seuraavista:

  • a - Lisää rivit. c - Vaihda linjat. d - Poista rivit.

Muutoskomentoa seuraa kokonaiset rivit, jotka poistetaan ( < ) ja lisätään tiedostoon ( > ).

Selitetään tulos:

  • 0a1 - Lisää toisen tiedoston rivi 1 tiedoston1 alkuun (rivin 0 ).
    • > Kubuntu - rivi toisesta rivistä, joka lisätään ensimmäiseen tiedostoon yllä kuvatulla tavalla.
    2d2 - Poista rivi 2 ensimmäisestä tiedostosta. 2 d symbolin jälkeen tarkoittaa, että jos riviä ei poisteta, se näkyy toisen tiedoston rivillä 2 .
    • < Arch Linux - poistettu rivi.
    4c4, 5 - Korvaa (vaihda) ensimmäisen tiedoston rivi 4-5 toisen tiedoston riveillä 4-5 .
    • < CentOS - Korvattavan ensimmäisen tiedoston rivi. --- - Erotin. > Arch Linux ja > Centos - Rivit toisesta tiedostosta, joka korvaa ensimmäisen tiedoston rivin.

Kontekstin muoto

Kun kontekstin lähtömuotoa käytetään, diff komento näyttää useita kontekstirivejä niiden tiedostojen välillä olevien rivien ympärillä, jotka eroavat toisistaan.

-c asetus käskee diff : n tuottamaan tulosteen kontekstiformaatissa:

diff -c file1 file2

*** file1 2019-11-25 21:00:26.422426523 +0100 --- file2 2019-11-25 21:00:36.342231668 +0100 *************** *** 1, 6 **** Ubuntu - Arch Linux Debian ! CentOS Fedora --- 1, 7 ---- + Kubuntu Ubuntu Debian ! Arch Linux ! Centos Fedora

Tulos alkaa nimistä ja aikaleimoista, jos tiedostoja verrataan, ja yhdestä tai useammasta osasta, jotka kuvaavat eroja. Jokainen osa näyttää tältä:

*************** *** from-file-line-numbers **** from-file-line… --- to-file-line-numbers ---- to-file-line…

  • from-file-line-numbers ja to-file-line-numbers - ensimmäisen ja toisen tiedoston rivinumero tai pilkuilla erotettu rivialue. from-file-line to-file-line - rivit, jotka eroavat toisistaan, ja kontekstirivit:
    • Kaksi välilyöntiä alkavat rivit ovat kontekstiriviä, molemmissa tiedostoissa samat rivit. Miinusmerkillä ( - ) alkavat rivit ovat rivit, jotka eivät vastaa mitään toisessa tiedostossa. Toisesta tiedostosta puuttuvat rivit. Plussymbolilla ( + ) alkavat rivit ovat rivejä, jotka eivät vastaa mitään ensimmäisessä tiedostossa. Ensimmäisestä tiedostosta puuttuvat rivit. Huutomerkillä ( ! ) Alkavat rivit ovat rivit, jotka vaihdetaan kahden tiedoston välillä. Jokainen riviryhmä, joka alkaa ! ensimmäisestä tiedostosta vastaava vastaavuus toisessa tiedostossa.

Selitetään tuotoksen tärkeimmät osat:

  • Tässä esimerkissä meillä on vain yksi osa, joka kuvaa eroja. *** 1, 6 **** ja --- 1, 7 ---- kertoo meille ensimmäisen ja toisen tiedoston rivien lukumäärän, jotka sisältyvät tähän osioon.Rivit Ubuntu , Debian , Fedora ja viimeinen tyhjä rivi ovat samat molemmissa tiedostoissa. Nämä rivit alkavat kaksoisvälillä.Line - Arch Linux ensimmäisestä tiedostosta ei vastaa mitään toisessa tiedostossa. Vaikka tämä rivi esiintyy myös toisessa tiedostossa, sijainnit ovat erilaiset.Line + Kubuntu toisesta tiedostosta ei vastaa mitään ensimmäisessä tiedostossa.Line ! CentOS ! CentOS ensimmäisestä tiedostosta ja riveistä ! Arch Linux ! Arch Linux ja ! CentOS Toisen tiedoston ! CentOS vaihdetaan tiedostojen välillä.

Oletuksena kontekstirivien lukumäärä on oletusarvoisesti kolme. Voit määrittää toisen numeron käyttämällä -C ( --contexts ) -vaihtoehtoa:

diff -C 1 file1 file2

*** file1 2019-11-25 21:00:26.422426523 +0100 --- file2 2019-11-25 21:00:36.342231668 +0100 *************** *** 1, 5 **** Ubuntu - Arch Linux Debian ! CentOS Fedora --- 1, 6 ---- + Kubuntu Ubuntu Debian ! Arch Linux ! Centos Fedora

Yhtenäinen muoto

Yhtenäinen tulostusmuoto on kontekstiformaatin parannettu versio ja tuottaa pienemmän tulosteen.

Käytä -u asetusta, jotta diff tulostaa tulosteen yhtenäisessä muodossa:

diff -u file1 file2

--- file1 2019-11-25 21:00:26.422426523 +0100 +++ file2 2019-11-25 21:00:36.342231668 +0100 @@ -1, 6 +1, 7 @@ +Kubuntu Ubuntu -Arch Linux Debian -CentOS +Arch Linux +Centos Fedora

Tuloste alkaa tiedostojen nimillä ja aikaleimoilla sekä yhdellä tai useammalla osalla, jotka kuvaavat eroja. Jokainen osa on seuraavassa muodossa:

*************** @@ from-file-line-numbers to-file-line-numbers @@ line-from-files…

  • @@ from-file-line-numbers to-file-line-numbers @@ - Tässä osassa olevan ensimmäisen ja toisen tiedoston rivien numero tai rivien alue. line-from-files - rivit, jotka eroavat toisistaan, ja rivit asiayhteydestä:
    • Kaksi välilyöntiä alkavat rivit ovat kontekstirivejä, rivit, jotka ovat samat molemmissa tiedostoissa.Miinusmerkillä ( - ) alkavat rivit ovat rivit, jotka poistetaan ensimmäisestä tiedostosta.Lisämerkkillä ( + ) alkavat rivit ovat ensimmäisestä tiedostosta lisätyt rivit.

Ohita tapaus

Kuten yllä olevissa esimerkeissä voi huomata, diff komento on oletuksena kirjainkoon mukainen.

Käytä -i vaihtoehtoa sanoaksesi diff ohittaaksesi tapauksen:

diff -ui file1 file2

--- file1 2019-11-25 21:00:26.422426523 +0100 +++ file2 2019-11-25 21:00:36.342231668 +0100 @@ -1, 6 +1, 7 @@ +Kubuntu Ubuntu -Arch Linux Debian +Arch Linux CentOS Fedora

johtopäätös

Tekstitiedostojen vertaaminen eroihin on yksi yleisimmistä tehtävistä Linux-järjestelmänvalvojille.

diff komento vertaa tiedostoja rivi riviltä. Saat lisätietoja kirjoittamalla terminaaliin man diff .

diff terminaali