Il comando diff viene utilizzato per confrontare i file di testo. Il comando visualizza i due file e le differenze tra di loro. Utilizzando vari simboli, l'output suggerisce come modificare un file per renderlo identico all'altro. Ogni simbolo ha un significato speciale.
Il simbolo minore di (<) con una riga dopo significa che la riga deve essere rimossa dal primo file perché non compare nel secondo. Il simbolo maggiore di (>) con una riga dopo significa che la riga deve essere aggiunta dal secondo file. Inoltre, il comando diff indica anche i numeri di riga per ciascun file che sarebbe interessato dalle operazioni di eliminazione, aggiunta e modifica.
Sintassi
La sintassi del comando diff è:
# diff {file name 1} {file name 2}
diff OPZIONI DI COMANDO
Il comando diff ha varie opzioni che ti consentono di specificare la natura dell'output.
Opzione | Descrizione |
---|---|
-b | Ignora le differenze di spaziatura. |
-i | Ignora le differenze tra maiuscole e minuscole. |
-t | Espandi i caratteri di tabulazione nelle righe di output. |
-w | Ignora differenze di spaziatura e tabulazioni. |
-c | Visualizza un elenco di differenze con tre righe di contesto. |
-u | L'output risulta in modalità unificata, che presenta un formato più snello. |
Esempi di comando diff
1. Confronta i file (elenca le modifiche per trasformare `vecchio_file` in `nuovo_file`):
# diff old_file new_file
2. Confronta i file, ignorando gli spazi bianchi:
# diff --ignore-all-space old_file new_file
3. Confronta i file, mostrando le differenze affiancate:
# diff --side-by-side old_file new_file
4. Confronta i file, mostrando le differenze nel formato unificato (come usato da `git diff`):
# diff --unified old_file new_file
5. Confronta le directory in modo ricorsivo (mostra i nomi di file/directory diversi e le modifiche apportate ai file):
# diff --recursive old_directory new_directory
6. Confronta le directory, mostrando solo i nomi dei file che differiscono:
# diff --recursive --brief old_directory new_directory
7. Crea un file di patch per Git dalle differenze di due file di testo, trattando i file inesistenti come vuoti:
# diff --text --unified --new-file old_file new_file > diff.patch
8. diff può anche confrontare le directory:
# diff dir1 dir2
che confronta tutti i file con lo stesso nome in quelle directory ed elenca tutti i file che appaiono in una directory ma non nell'altra. Per confrontare intere gerarchie di directory in modo ricorsivo, utilizzare l'opzione -r:
# diff -r dir1 dir2
che produce un rapporto (potenzialmente massiccio) di tutte le differenze.
Conclusione
Il comando diff confronta due file riga per riga o due directory. Quando si confrontano i file di testo, diff può produrre rapporti dettagliati sulle loro differenze. Per i file binari, diff segnala semplicemente se differiscono o meno. Per tutti i file, se non ci sono differenze, diff non produce alcun output.