Su FreeBSD o sulla maggior parte dei sistemi Linux, puoi reindirizzare l'output di diff attraverso cat -v -e -t
per mostrare le differenze degli spazi bianchi.
diff file1 file2 | cat -vet
Le schede verranno mostrate come ^I
, un $
verrà mostrato alla fine di ogni riga in modo da poter vedere gli spazi bianchi finali e i caratteri non stampabili verranno visualizzati come ^X
o M-X
.
Se hai GNU coreutils (disponibile sulla maggior parte delle distribuzioni Linux non-busybox), questo può essere semplificato in
diff file1 file2 | cat -A
Sui sistemi busybox, usa catv -vet
.
Per vim
utenti, c'è una pratica utilità per mostrare le differenze esatte tra i file:
vimdiff file1 file2
Questo metterà ogni file in finestre, fianco a fianco, e le differenze saranno evidenziate a colori.
Alcuni comandi utili in vimdiff
Mentre in vimdiff
, alcuni comandi utili sono:
-
]c
:passa alla modifica successiva -
[c
:passa alla modifica precedente -
ctrl-W ctrl-W
:passa ad un'altra finestra -
zo
:pieghe aperte -
zc
:chiudere le pieghe
Esempio
Ecco un esempio di vimdiff
in un xterm
confrontando due versioni di un cups
file di configurazione:
Puoi vedere che lunghe sezioni di linee identiche sono state collassate. Possono essere riaperti con zo
.
La combinazione di colori varia a seconda delle impostazioni delle opzioni. Nell'esempio precedente, quando una riga appare in un file ma non nell'altro, a quella riga viene assegnato uno sfondo blu scuro. Nell'altro file, le righe mancanti sono indicate da linee tratteggiate. Quando una linea appare in entrambi i file ma presenta alcune differenze, le parti invariate delle linee hanno uno sfondo rosa e le parti modificate hanno uno sfondo rosso.
Uno dei file è stato modificato su un computer Windows?
La terminazione di linea standard su Windows è CRLF, mentre su Linux è semplicemente LF (e su Mac era CR, ma sospetto che sia cambiato da OS X).
Prova wc -l
sui file e vedi quante righe, quindi verifica se la differenza di dimensioni è uguale al numero di righe (l'ultima riga potrebbe non essere terminata in un file).