Sisällysluettelo:
- Kuinka käyttää
diff
komentoa - Normaali muoto
- Kontekstin muoto
- Yhtenäinen muoto
- Ohita tapaus
- johtopäätös
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:
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 rivi1
tiedoston1 alkuun (rivin0
).-
> Kubuntu
- rivi toisesta rivistä, joka lisätään ensimmäiseen tiedostoon yllä kuvatulla tavalla.
2d2
- Poista rivi2
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 rivi4-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
jato-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.
- Kaksi välilyöntiä alkavat rivit ovat kontekstiriviä, molemmissa tiedostoissa samat rivit. Miinusmerkillä (
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.RivitUbuntu
,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.
- Kaksi välilyöntiä alkavat rivit ovat kontekstirivejä, rivit, jotka ovat samat molemmissa tiedostoissa.Miinusmerkillä (
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
.
Chmod-komento linuxissa (tiedostooikeudet)
Linuxissa tiedostojen käyttöä hallitaan tiedostojen käyttöoikeuksien, määritteiden ja omistajuuden kautta. Tämä opas sisältää kuinka chmod-komennolla voidaan muuttaa tiedostojen ja hakemistojen käyttöoikeuksia.
Chgrp-komento linuxissa (muuta ryhmää)
Linuxissa kukin tiedosto liitetään omistajaan ja ryhmään, ja sillä on käyttöoikeudet, jotka määrittävät, mitkä käyttäjät voivat lukea, kirjoittaa tai suorittaa tiedoston. Chgrpc-komento muuttaa annettujen tiedostojen ryhmäomistusta.
Cp-komento linuxissa (kopioi tiedostot)
cp on komentoriviohjelma tiedostojen ja hakemistojen kopioimiseksi Unix- ja Linux-järjestelmissä.