mywiki/linux/diff.md

3.0 KiB

Confrontare file

Il comando diff confronta due file e produce una lista delle loro differenze. Per essere più precisi, produce un elenco delle modifiche che dovrebbero essere apportate al primo file, per farlo corrispondere al secondo file.

diff file1 file2

Ecco un esempio:

 > cat file1
file1

 > cat file2
file2
file3
file1

 > diff file1 file2
0a1,2
> file2
> file3

Ogni differenza è elencata a sua volta in una singola colonna e ogni differenza viene etichettata. L'etichetta è composta da due numeri che circondano una lettera, come nell'esempio 0a1. Il primo numero è il numero di riga in file1, e il secondo numero è il numero di riga in file2. La lettera nel mezzo può essere:

  • c: la riga nel primo file deve essere modificata per corrispondere alla riga nel secondo file;
  • d: la riga nel primo file deve essere eliminata;
  • a: il contenuto extra deve essere aggiunto al primo file per farlo corrispondere al secondo file.

I parametri -s e -q indicano, rispettivamente, se i due file sono identici ovvero differenti:

 > diff -s file2 file3
I file file2 e file3 sono identici

 > diff -q file1 file2
I file file1 e file2 sono diversi

Una vista alternativa

 > diff -y -W 70 file1 file3
                                  >     file2

file5                             |     file3
file1                                   file1
file4                             <

L'opzione -y (side by side) utilizza un layout diverso per mostrare le differenze tra i file. Spesso è conveniente specificare la larghezza -W per limitare il numero di colonne visualizzate.

Il primo file viene visualizzato a sinistra mentre il secondo è mostrato sulla destra. Le righe di ogni file vengono visualizzate fianco a fianco. Ci sono caratteri indicatori accanto alle varie righe:

  • |: una riga che è differente nel secondo file;
  • <: una riga che non è presente nel secondo file;
  • >: una riga che non è presente nel primo file

Uno spruzzo di colore

sudo apt-get install colordiff

Il comando colordiff aggiunge colore all'output di diff.

Confrontare directories

Il comando diff permette anche di confrontare cartelle tra loro. La sintassi è molto semplice:

diff -r dir1 dir2

Vengono mostrati i nomi dei file/directories differenti e le differenze tra i files. Con l'opzione -q viene mostrato solo il nome dei files diversi.

ls -R 
.:
dir1  dir2

./dir1:
file1

./dir2:

colordiff -rq dir1 dir2
Solo in dir1: file1

Vimdiff

Per chi utilizza vim, esiste vimdiff https://linuxhandbook.com/vimdiff/.

Collegamenti