Diff
Diff on komentoriviohjelma, jolla voidaan vertailla kahta eri tiedostoa. Tavallisimpia käyttökohteita on esimerkiksi ohjelmistokehityksessä eri versioiden vertailu. Diffiä hyödynnetään esimerkiksi subversion-versionhallinnassa.
Peruskäyttö
Tehdään aluksi kaksi C-kielistä tiedostoa, esimerkiksi hello.c
#include <stdio.h> void main() { printf("Hello word"); }
Ja helllo2.c
#include <stdio.h> int main() { printf("Hello world"); return 0; }
Esimerkissä uuteen hello2.c-versioon korjattiin kirjoitusvirhe rivillä 3 ja lisättiin funktio palauttamaan 0. Näitä voitaisiin nyt vertailla komennolla
diff hello.c hello2.c
Diffin tuloste olisi seuraavanlainen
2,3c2,4 < void main() { < printf("Hello word"); --- > int main() { > printf("Hello world"); > return 0;
< tarkoittaa, että rivi poistui ja > tarkoittaa uutta riviä. Tulosteesta nähdään että alkuperäisen tiedoston rivit 2-3 korvaantuivat viivan alla olevilla uusilla riveillä 2-4.
Vivulla -u diffin tulosteen saa monipuolisemmaksi ja selkeämmäksi. Esimerkkitapauksessamme diff hello.c hello2.c -u antaisi tulosteen
--- hello.c 2006-04-07 10:05:08.000000000 +0000 +++ hello2.c 2006-04-07 10:12:47.000000000 +0000 @@ -1,5 +1,6 @@ #include <stdio.h> -void main() { - printf("Hello word"); +int main() { + printf("Hello world"); + return 0; }
Aluksi nähdään tiedostojen nimet ja niiden viimeiset muokkausajat. Varsinainen tuloste on selkeä, + rivin edessä tarkoittaa lisättyä riviä ja - poistettua. Nyt diff näyttää myös muutaman rivin muutoskohdan ympäriltä mikä selkeyttää tulostetta.
Hakemistojen vertailu
Diff osaa yksittäisten tiedostojen lisäksi vertailla myös kokonaisia hakemistoja. Tällöin käytetään vipua -r (recursive). Hakemistoja vertaillessa diff käy läpi kaikki hakemistojen tiedostot myös alihakemistoista.
Katso myös
Linkkejä
- FLUG:in Diff-ohje Linux-ohjelmointioppaassa.