5.10 Differenze tra file
Esistono comandi che permettono di evidenziare le differenze tra due o più file, di cui il
capostipite è diff (man page diff(1)).
____________________________________________________________________
Comando: diff
Path: /usr/bin/diff
SINTASSI
$ diff [option] [--] file1 file2
DESCRIZIONE
-
option è l’insieme delle opzioni che modificano il comportamento di diff. Può assumere i
seguenti valori:
-
-n (obsoleto) indica di visualizzare n righe di contesto;
-
-a | --text
indica di trattare i file come se fossero tutti in formato testo;
-
-b | --ignore-space-change
indica di ignorare le differenze dovute al numero di spazi consecutivi;
-
-B | --ignore-blank-lines
indica di ignorare le righe vuote nel confronto tra i file;
-
-q | --brief
indica di evidenziare soltanto se i file differiscono o meno senza alcun
ulteriore dettaglio;
-
-c indica di utilizzare il formato di output contestuale;
-
-C [n] | --context[=n]
indica di utilizzare il formato di output contestuale visualizzando n
righe i contesto (se non indicato n è 3);
-
--changed-group-format=format
indica di utilizzare il formato format per la visualizzazione
dell’output;
-
-d | --minimal
indica di utilizzare un algoritmo diverso per la ricerca dei
cambiamenti (questo può rendere più lento diff);
-
-D name | --ifdef=name
indica di considerare il formato di output condizionale per mezzo
della macro name;
-
-e | --ed
indica di utilizzare il formato di output compatibile con gli script per
ed;
-
-x pattern | --exclude=pattern
indica di non considerare i file (o directory) che contengono pattern;
-
-X file | --exclude-from=file
nel confronto tra directory, indica di ignorare i file il cui nome
contiene file;
-
-t | --expand-tab
indica di espandere in spazi i caratteri TAB per preservare
l’allineamento delle righe dei file;
-
-f | --forward-ed
indica di formattare l’output in maniera simile ad uno script per ed;
-
-F regexp | --show-function-line=regexp
indica di visualizzare le righe che precedono quelle contenenti le
differenze, e che soddisfano l’espressione regolare regexp;
-
-h non ha alcun effetto (solo per compatibilità con Unix);
-
-H | --speed-large-files
indica di utilizzare la ricerxca euristica per velocizzare la ricerca di
piccole modifiche all’interno di file di grosse dimensioni;
-
--horizon-lines=n
indica di non scartere le ultime n righe del prefisso comune e le prime
n del suffisso comune ???;
-
-i indica di considerare le differenze fra lettere maiuscole e minuscole
tra i file (case insensitive);
-
-I regexp | --ignore-matching-lines=regexp
indica di ignorare le modifiche relativi a righe che soddisfano
l’espressione regolare regexpr;
-
-w | --ignore-all-space
indica di ignorare gli spazi nel confronto tra i file;
-
--ignore-case
indica di ignorare le differenze tra lettere maiuscole e minuscole;
-
-T | --initial-tab
indica di visualizzare il carattere TAB invece di uno spazio prima
della visualizzazione di una riga;
-
-l | --paginate
indica di passare l’output a pr per impaginarlo;
-
-L lbl | --label=lbl
indica di utilizzare l’etichtta lbl al posto del nome del file nel formato
contestuale e negli header;
-
--left-column
indica di visualizzare soltanto la colonna di sinistra nel caso di
colonne adiacenti (side by side);
-
--line-format=format
indica di utilizzare il formato format nella visaulizzazione dell’output;
-
-n | --rcs
indica di utilizzare il formato di output RCS;
-
-N | --new-file
nel caso di confronto tra directory, indica di considerare i file non
presenti in una directory come se fossero presenti ma vuoti;
-
--new-group-format=format
indica di utilizzare il formato format per la visualizzazione di un
gruppo di righe del secondo file;
-
--new-line-format=format
indica di utilizzare il formato format per la visualizzazione di una
riga del secondo file;
-
--old-group-format=format
indica di utilizzare il formato format per la visualizzazione di un
gruppo di righe del primo file;
-
--old-group-format=format
indica di utilizzare il formato format per la visualizzazione di una
riga del primo file;
-
-p chor --show-c-function
indica di visualizzare in quale funzione C nella quale è avvenuta la
modifica;
-
-P | --unidirectional-new-file
nel caso di confronto tra direcory, indica di considerare un file
inesistente in file2 come presente ma vuoto;
-
-r | --recursive
nel caso di confronto tra direcory, indica di procedere ricorsivamente
nelle eventuali sottodirectory incontrate;
-
-s chor --report-identical-files
indica di visualizzare se i file sono uguali;
-
-S file chor --starting-file=file
nel caso di confronto tra direcory, indica di iiziare dal file file;
-
--from-file=file
indica di confrontare file con tutti gli operandi (file può essere una
directory);
-
--to-file=file
indica di confrontare tutti gli operandi con file (file può essere una
directory);
-
--sdiff-merge-assist
indica di visualizzare informazioni aggiuntive;
-
-y chor --side-by-side
indica di utilizzare il formato di output affiancato;
-
--suppress-common-lines
indica di non visualizzare le righe uguali nel formato affiancato;
-
-u indica di utilizzare il formato di output unificato;
-
--unchanged-group-format=format
indica di utilizzare il formato format per la visualizzazione di un
gruppo di righe da entrambi i file;
-
--unchanged-group-format=format
indica di utilizzare il formato format per la visualizzazione di una
riga da entrambi i file;
-
-U n | --unified[=n]
indica di utilizzare il formato di output unificato, visualizzando n
righe di contesto (se non specificato n è 3);
-
-v | --version
visualizza la versione diff;
-
-W n | --width=n
specifica il numero di colonne (larghezza) nella visualizzazione
affiancata;
-
file1 è il nome di uno dei file da confrontare. Può essere anche una directory, nel qual
caso viene confrontato il file in essa presente, che ha il nome specificato da file2, con
il file file2. Se file2 è anch’esso una directory, vengono confrontati i file
contenuti nella directory file1 con gli omonimi presenti nella directory
file2;
-
file2 è il nome di uno dei file da confrontare (v. file1);
______________________________
Esistono anche altri comandi per la visualizzazione delle differenze tra file
come sdiff (man page sdiff(1)), diff3 che permette il confronto fra 3 file
contemporaneamente (man page diff3(1)) e vimdiff (o la sua versione con interfaccia
grafica gvimdiff) (man page vimdiff(1)) che è un visualizzatore basato su
vim.
[da completare ...] esempi ...