Guida avanzata a Solaris

Visualizzazione delle differenze tra due file (diff)

Accade spesso che diverse persone che hanno accesso ad un file ne effettuino una copia e la modifichino. Il comando diff permette di identificare le differenze esistenti tra due versioni di un file ASCII. Il comando:

$ diff primo_file secondo_file

confronta riga per riga primo_file e secondo_file cercando eventuali differenze. Quando il programma individua una o più righe diverse, esso determina se la differenza riscontrata è il risultato di un'aggiunta, di una cancellazione o di una modifica, e individua il numero di righe interessate. L'output del comando indica i numeri delle righe che presentano differenze in ciascuno dei file, seguito dalle parti di testo che risultano diverse.

Se la differenza è il risultato di un'aggiunta, diff visualizza una riga nella forma seguente:

p[,p] a s[,s]

in cui p è il numero di una riga di primo_file e s è il numero di una riga di secondo_file.

Se la differenza è il risultato di una cancellazione, diff utilizza una d al posto della a; se è il risultato di una modifica, diff utilizza una c.

Le righe diverse dei due file seguono immediatamente i numeri di riga. Il testo di primo_file è preceduto da un simbolo di minore (<), mentre il testo di secondo_file è preceduto da un simbolo di maggiore (>).

Questo esempio mostra due file e l'output ottenuto con il comando diff:

$ cat agenda.7.15
Settimana del 7/15

Giorno:  Ora:        Azione:                 Note:

M       10:00        Team hardware        ogni due settimane
M       1:30         Team software
G       3:00         Team documentazione
V       1:00         Colloquio
$ cat agenda.7.22
Settimana del 7/22

Giorno:  Ora:        Azione:                 Note:

L       8:30         Riunione staff             tutto il giorno
M       10:00        Team hardware         ogni due settimane
M       1:30         Team software
G       3:00         Team documentazione
$ diff agenda.7.15 agenda.7.22
1c1
< Settimana del 7/15
---
> Settimana del 7/22
4a5
> L       8:30         Riunione staff             tutto il giorno
8d8
< V       1:00         Colloquio

Se i file confrontati sono identici, il comando diff non genera alcun output.

Il comando diff(1) dispone di molte altre opzioni oltre a quelle descritte. Per maggiori informazioni, vedere man Pages(1): User Commands.

Confronto fra tre file (diff3)

Per individuare le differenze fra tre versioni di un file, usare il comando diff3 come segue:

$ diff3 file1 file2 file3

diff3 confronta tre versioni di un file e visualizza le parti di testo differenti marcandole con i seguenti codici:

==== tutti i file sono diversi

====1 file1 è diverso

====2 file2 è diverso

====3 file3 è diverso

Uso di bdiff su file di grandi dimensioni

Se occorre confrontare file di grandi dimensioni, è consigliabile usare il comando bdiff anziché diff. La sintassi dei due comandi è la stessa:

$ bdiff primo_file secondo_file

Si consiglia di usare bdiff al posto di diff per file più lunghi di 3500 righe.