DIFF(1)

NOME
diff - trova differenze tra due file

SINTASSI
diff [opzioni] file-da file-verso

DESCRIZIONE
Nel caso più semplice, diff confronta il contenuto dei due file file-da e file-verso. Se - viene usato come nome di file, allora il testo viene letto da standard input. Come caso speciale, diff - - confronta una copia di standard input con se stessa.

Se file-da è una directory mentre file-verso non lo è, diff fa il confronto col file in file-da con nome file-verso, e vice versa. Il file (che non è una directory) non può essere -.

Se sia file-da che file-verso sono directory, diff confronta i file corrispondenti di ciascuna directory, in ordine alfabetico; il confronto non è ricorsivo, a meno che venga usata l'opzione -r o --recursive. diff non confronta mai il contenuto di una directory come se fosse un file normale. Il file che viene specificato totalmente non può essere standard input, non avendo questo un nome, e quindi non avendo senso il concetto di «file con lo stesso nome».

Le opzioni di diff iniziano con -, per cui, normalmente, né file-da né file-verso possono iniziare con un -. D'altra parte, -- come argomento a sé stante tratta gli argomenti rimanenti come nomi di file, anche se iniziano per -.

  Opzioni
Più sotto c'è un sommario di tutte le opzioni accettate dalla versione GNU di diff. La maggior parte delle opzioni ha due nomi equivalenti, uno dei quali è una lettera singola preceduta da -, mentre l'altro è un nome lungo preceduto da --. Più opzioni monolettera possono essere combinate in una singola parola sulla riga di comando (a meno che siano seguite da un'opzione): -ac è l'equivalente di -a -c. Le opzioni lunghe possono essere abbreviate ad un prefisso unico del nome. Parentesi quadre ([ e ]) indicano che un'opzione prende un argomento opzionale.

-righe
    mostra righe (un intero) righe di contesto. Questa opzione non specifica da sola un formato di output; non ha nessun effetto a meno che venga combinata con -c o -u. Quest'opzione è obsoleta. Per operare correttamente, patch ha, di solito, bisogno di almeno due righe di contesto.

-a  Tratta tutti i file come testo confrontandoli riga per riga, anche se non sembrano essere testo.

-b  Ignora differenza nella quantità di spazi bianchi.

-B  Ignora differenze che consistono solo in righe vuote (eccedenti o mancanti).

--brief
    Riferisce solo se i file sono diversi, e non i particolari della differenza.

-c  Usa il formato «a contesto» (context output, in inglese).

-C righe

--context[=righe]
    Usa il formato a contesto, mostrando righe (un intero) righe di contesto, o tre se righe non è specificata. Per operare correttamente, patch ha, di solito, bisogno di almeno due righe di contesto.

--changed-group-format=formato
    Usa formato per scrivere un gruppo di righe contenente le differenze di entrambi i file nel formato if-then-else.

-d  Usa un algoritmo diverso per trovare un, probabilmente, minore insieme di modifiche da fare. Questo rende diff più lento (a volte molto più lento).

-D nome
    Scrive usando il formato if-then-else, dipendente dalla macro nome del preprocessore.

-e

--ed
    Emette uno scritto ed valido.

--exclude=modello
    Confrontando due directory, ignora file e sottodirectory il cui nome corrisponda a modello.

--exclude-from=file
    Confrontando due directory, ignora file e sottodirectory il cui nome corrisponda ad un modello contenuto in file.

--expand-tabs
    Espande i tabulatori nell'output per preservare l'allineamento di tabulazione nel file d'input.

-f  Produce output che assomiglia più o meno ad uno scritto di ed ma con le modifiche nello stesso ordine in cui appaiono nel file.

-F regexp
    Nel formato a contesto o unificato, mostra, per ciascun blocco di differenze, alcune delle righe precedenti corrispondenti a regexp.

--forward-ed
    Produce output che assomiglia più o meno ad uno scritto di ed ma con le modifiche nello stesso ordine in cui appaiono nel file.

-h  Quest'opzione, al momento, non ha nessun effetto; è presente per compatibilità Unix.

-H  Usa un procedimento euristico per gestire più rapidamente grossi file con numerose modifiche, piccole ma diffuse.

--horizon-lines=righe
    Non elimina le ultime righe righe di prefisso comune né le prime righe di suffisso comune.

-i  Considera allo stesso modo maiuscole e minuscole, ignorando ogni relativa differenza.

-I regexp
    Ignora ogni differenza che consista solo nella presenza o assenza di righe corrispondenti a regexp.

--ifdef=nome
    Produce output nel formato if-then-else, basandosi sulla condizione espressa dalla macro nome di preprocessore.

--ignore-all-space
    Ignora gli spazi bianchi mentre confronta delle righe.

--ignore-blank-lines
    Ignora ogni differenza che consista solo nella presenza o assenza di righe vuote.

--ignore-case
    Considera allo stesso modo maiuscole e minuscole, ignorando ogni relativa differenza.

--ignore-matching-lines=regexp
    Ignora ogni differenza che consista solo nella presenza o assenza di righe corrispondenti a regexp.

--ignore-space-change
    Ignora differenza nella quantità di spazi bianchi.

--initial-tab
    Usa un tabulatore invece di uno spazio davanti al contenuto di una riga in formato a contesto o unificato. In questo modo l'allineamento dei tabulatori nella riga assume un aspetto normale.

-l  Fa passare l'output attraverso pr per impaginarlo.

-L etichetta

--label=etichetta
    Usa etichetta invece del nome del file nelle intestazioni di un formato a contesto o unificato.

--left-column
    Stampa solo quella di sinistra fra due colonne comuni nel formato lato a lato.

--line-format=formato
    Usa formato per scrivere tutte le righe di input nel formato if-then-else.

--minimal
    Usa un algoritmo diverso per trovare un, probabilmente, minore insieme di modifiche da fare. Questo rende diff più lento (a volte molto più lento).

-n  Produce differenze in formato RCS; come -f, ma ogni comando specifica il numero di righe coinvolte.

-N

--new-file
    Confrontando due directory, se un file viene trovato solo in una, viene trattato come se esistesse, vuoto, nell'altra.

--new-group-format=formato
    Usa formato per scrivere un gruppo di righe prese dal solo secondo file nel formato if-then-else.

--new-line-format=formato
    Usa formato per scrivere una riga presa dal solo secondo file nel formato if-then-else.

--old-group-format=formato
    Usa formato per scrivere un gruppo di righe prese dal solo primo file nel formato if-then-else.

--old-line-format=formato
    Usa formato per scrivere una riga presa dal solo primo file nel formato if-then-else.

-p  Mostra in quale funzione C appare ciascuna modifica.

-P  Confrontando due directory, se un file viene trovato solo in una, viene trattato come se esistesse, vuoto, nell'altra.

--paginate
    Fa passare l'output attraverso pr per impaginarlo.

-q  Riferisce solo se i file sono diversi, e non i particolari della differenza.

-r  Confrontando due directory, confronta ogni sottodirectory ricorsivamente.

--rcs
    Produce differenze in formato RCS; come -f, ma ogni comando specifica il numero di righe coinvolte.

--recursive
    Confrontando due directory, confronta ogni sottodirectory ricorsivamente.

--report-identical-files

-s  Riferisce quando due file sono identici.

-S file
    Confrontando due directory, incomincia dal file file. Ciò viene usato per riprendere un confronto interrotto.

--sdiff-merge-assist
    Stampa informazioni aggiuntive per aiutare sdiff. sdiff usa quest'opzione invocando diff. L'opzione non dovrebbe essere invocata direttamente dall'utente.

--show-c-function
    Mostra in quale funzione C appare ciascuna modifica.

--show-function-line=regexp
    Nel formato a contesto o unificato, mostra, per ciascun blocco di differenze, alcune delle righe precedenti corrispondenti a regexp.

--side-by-side
    Usa il formato lato a lato.

--speed-large-files
    Usa un procedimento euristico per gestire più rapidamente grossi file con numerose modifiche, piccole ma diffuse.

--starting-file=file
    Confrontando due directory, incomincia dal file file. Ciò viene usato per riprendere un confronto interrotto.

--suppress-common-lines
    Non stampa le righe comuni nel formato lato a lato.

-t  Espande i tabulatori nell'output per preservare l'allineamento di tabulazione nel file d'input. -T Usa un tabulatore invece di uno spazio davanti al contenuto di una riga in formato a contesto o unificato. In questo modo l'allineamento dei tabulatori nella riga assume un aspetto normale.

--text
    Tratta tutti i file come testo confrontandoli riga per riga, anche se non sembrano essere testo.

-u  Usa il formato unificato.

--unchanged-group-format=formato
    Usa formato per scrivere un gruppo di righe comuni prese da entrambi i file, nel formato if-then-else.

--unchanged-line-format=formato
    Usa formato per scrivere una riga comune presa da entrambi i file, nel formato if-then-else.

--unidirectional-new-file
    Confrontando due directory, se un file viene trovato solo nella seconda viene trattato come se esistesse, vuoto, nella prima.

-U righe

--unified[=righe]
    Usa il formato unificato, mostrando righe (un intero) righe di contesto, oppure tre qualora righe non fosse stata specificata. Per operare correttamente, patch ha, di solito, bisogno di almeno due righe di contesto.

-v

--version
    Stampa il numero di versione di diff.

-w  Confrontando due righe ignora gli spazi bianchi.

-W colonne

--width=colonne
    Usa una larghezza di colonne nel formato lato a lato.

-x modello
    Confrontando due directory, ignora file e sottodirectory il cui nome corrisponda a modello.

-X file
    Confrontando due directory, ignora file e sottodirectory il cui nome corrisponda ad un modello contenuto in file.

-y  Usa il formato lato a lato.

VEDERE ANCHE
cmp(1), comm(1), diff3(1), ed(1), patch(1), pr(1), sdiff(1).

DIAGNOSTICA
Uno stato di uscita di zero significa che non è stata trovata nessuna differenza, di uno che ne sono state trovate, di due che ci sono problemi.