Manpages

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-dafile-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.