Diff

Guida originale di Matteo

diff e' un comando che serve per trovare le differenze tra file, in questo modo e' possibile creare dei piccoli file, chiamati patch, che ci permettono di aggiornare un file cambiato, senza doverlo scaricare tutto per intero.

Un giorno, per caso, mi è capitato di dare 'man diff' ed ho scoperto il parametro '-u'.

Se abbiamo 2 file, chiamati test1 e test2, ecco cosa succede quando usiamo 'diff:

 $ cat test1
 a
 b
 c
 d
 e
 f
 $ cat test2
 a
 b
 v
 d
 e
 f
 $ diff test1 test2
 3c3
 < c
 --- 
 > v

e fin quì tutto ok.

E' chiaro che per rendere uguali test1 e test2 bisogna togliere una c dal primo e trasformarla in una v, o viceversa per allineare test2 a test1.

Ma se il file è grande? E' un po' difficile, con un simile output del diff, allineare i due file, tanto più è difficile automatizzarlo.

 $ diff -u test1 test2 > ptc
 $ cat ptc
 --- test1 2006-07-16 16:06:51.000000000 +0200
 +++ test2 2006-07-16 16:07:03.000000000 +0200
  -1,6 +1,6 
 a
 b
 -c
 +v
 d
 e
 f

Ecco l'output del diff un po' più elaborato; forse più difficile da comprendere (per un umano) soprattutto quando è grande, ma molto semplice in caso di una macchina. E' indicato la data e l'ora del cambiamenteo,

Infatti:

 $ patch test1 < ptc
 patching file test1
 $ cat test1
 a
 b
 v
 d
 e
 f

Per chi non ne ha mai visto una, quella che abbiamo creato è una patch. (v. man patch)