Hai bisogno di vedere le differenze tra due revisioni di un file di testo?? Successivamente diff
è il comando che ti serve. Questo tutorial ti mostra come usare diff
su Linux e macOS, il modo più semplice.
Buceando in diff
il diff
Il comando confronta due file e produce un elenco delle differenze tra i due. Per essere più precisi, emette un elenco delle modifiche che devono essere apportate al primo file in modo che corrisponda al secondo file. Se tieni conto di questo, sarà più facile per te capire il risultato di diff
. il diff
Il comando è stato progettato per trovare le differenze tra i file del codice sorgente e produrre un output che potrebbe essere letto e utilizzato da altri programmi., Come la toppa comando. In questo tutorial, esamineremo i modi di utilizzo più utili e a misura d'uomo diff
.
Entriamo e analizziamo due file. L'ordine dei file sulla riga di comando determina quale file diff
considera que es el “primer archivo” y que considera que es el “segundo archivo”. Nel seguente esempio, alpha1 è il primo file e alpha2 è il secondo file. Entrambi i file contengono il alfabeto fonetico ma il secondo file, alfa2, ha avuto alcune modifiche aggiuntive in modo che i due file non siano identici.
Possiamo confrontare i file con questo comando. scrive diff
, Uno spazio, il nome del primo file, Uno spazio, il nome del secondo file e quindi premere Invio.
diff alfa1 alfa2
Come sezionare questo risultato?? Una volta che sai cosa cercare, non sarà così male. Ogni differenza è a sua volta elencata in una singola colonna e ogni differenza è etichettata. L'etichetta contiene numeri su entrambi i lati di una lettera, Che cosa 4c4
. Il primo numero è il numero di riga in alpha1 e il secondo numero è il numero di riga in alpha2. La lettera di mezzo può essere:
- C: La riga del primo file dovrebbe essere modificata in modo che corrisponda alla riga del secondo file.
- D: La riga del primo file deve essere rimossa per corrispondere al secondo file.
- un: È necessario aggiungere contenuti aggiuntivi al primo file in modo che corrispondano al secondo file.
il 4c4
nel nostro esempio, dicci che la riga quattro di alpha1 deve essere modificata in modo che corrisponda alla riga quattro di alpha2. Questa è la prima differenza tra i due file che diff
incontri.
Righe che iniziano con <
controlla il primo file, nel nostro esempio alpha1, e le righe che iniziano con >
controlla il secondo file, alfa2. La linea < Delta
ci dice che la parola Delta è il contenuto della riga quattro in alpha1. La linea > Dave
ci dice che la parola Dave è il contenuto della riga quattro in alpha2. Quindi, per riassumere, dobbiamo sostituire Delta con Dave sulla riga quattro in alpha1, affinché quella riga corrisponda in entrambi i file.
La prossima modifica è indicata dal 12c12
. Applicando la stessa logica, questo ci dice che la linea 12 in alpha1 contiene la parola Lima, ma la linea 12 da alpha2 contiene la parola Linux.
La terza modifica si riferisce a una riga che è stata rimossa da alpha2. L'etichetta 21d20
se descifra como “la linea 21 deve essere rimosso dal primo file affinché entrambi i file vengano sincronizzati dalla linea 20 in poi”. il < Uniform
line ci mostra il contenuto della riga da rimuovere da alpha1.
La quarta differenza è etichettata 26a26,28
. Questa modifica si riferisce a tre righe aggiuntive che sono state incorporate in alpha2. Notare la 26,28
sull'etichetta. I numeri di due righe separati da una virgola rappresentano un intervallo di numeri di riga. In questo esempio, la gamma va dalla linea 26 a 28. La etiqueta se interpreta como “en la línea 26 dal primo file, aggiungi le righe 26 un 28 del segundo archivo”. Ci vengono mostrate le tre righe in alpha2 che devono essere aggiunte ad alpha1. Questi contengono le parole Quirk, Strano e Fascino.
Rapide a linea singola
Se tutto quello che vuoi sapere è se due file sono uguali, Utilizzare il -s
(segnala file identici) opzione.
diff -s alfa1 alfa3
Puoi usare il -q
(breve) opzione per ottenere una dichiarazione altrettanto concisa su due file diversi.
diff -q alfa1 alfa2
Una cosa a cui prestare attenzione è che con due file identici il-q
L'opzione (breve) si chiude completamente e non riporta nulla.
Una visione alternativa
il -y
(Fianco a fianco) usa un layout diverso per descrivere le differenze di file. Spesso è conveniente usare il -W
(larghezza) con la vista fianco a fianco, per limitare il numero di colonne visualizzate. In questo modo si evitano antiestetiche righe avvolgenti che rendono difficile la lettura dell'output. Ecco l'abbiamo detto diff
per produrre una visualizzazione affiancata e limitare l'output a 70 colonne.
diff -y -W 70 alfa1 alfa2
Il primo file sulla riga di comando, alfa1, viene visualizzato a sinistra e la seconda riga della riga di comando, alfa2, mostrato a destra. Vengono visualizzate le righe di ciascun file, uno accanto all'altro. Ci sono caratteri indicatori accanto a quelle righe in alpha2 che sono state modificate, rimosso o aggiunto.
- |: Una riga che è stata modificata nel secondo file.
- <: Una riga che è stata rimossa dal secondo file.
- >: Una riga che è stata aggiunta al secondo file che non è nel primo file.
Se preferisci un riepilogo parallelo più compatto delle differenze di file, Utilizzare il --suppress-common-lines
opzione. Questo forze diff
per elencare solo le righe modificate, aggiunto o rimosso.
diff -y -W 70 --sopprimere le linee comuni alfa1 alfa2
Aggiungi un tocco di colore
Un'altra utility chiamata colordiff
aggiunge l'evidenziazione del colore al diff
produzione. Questo rende molto più facile vedere quali linee hanno differenze.
Utilizzo apt-get
per installare questo pacchetto sul tuo sistema se stai usando Ubuntu o un'altra distribuzione basata su Debian. Su altre distribuzioni Linux, usa lo strumento di gestione dei pacchetti della tua distribuzione Linux.
sudo apt-get install colordiff
Utilizzo colordiff
proprio come lo useresti tu diff
.
In realtà, colordiff
è un involucro per diff
, e diff
fa tutto il lavoro dietro le quinte. È per questo, tutti i diff
le alternative funzioneranno con colordiff
.
Fornisci un po' di contesto
Per trovare una definizione intermedia tra avere tutte le righe nei file visualizzate sullo schermo e avere solo le righe modificate nell'elenco, possiamo chiedere diff
per fornire un po' di contesto. Ci sono due modi per farlo. Entrambi i modi raggiungono lo stesso scopo, che è mostrare alcune righe prima e dopo ogni riga modificata. Sarai in grado di vedere cosa sta succedendo nel file in cui è stata rilevata la differenza.
Il primo metodo utilizza il -c
(contesto copiato) opzione.
colordiff -c alfa1 alfa2
il diff
l'output ha un'intestazione. L'intestazione elenca i due nomi di file e i loro tempi di modifica. Ci sono asterischi (*
) prima del nome del primo file e trattini (-
) prima del nome del secondo file. Verranno utilizzati asterischi e trattini per indicare a quale file appartengono le righe di output.
Una linea di asterischi con 1,7 nel mezzo indica che stiamo vedendo linee di alfa1. per essere precisi, stiamo guardando le righe da uno a sette. La parola Delta è contrassegnata come modificata. Ha un punto esclamativo ( !
) insieme a lui, ed è rosso. Tre righe di testo invariato vengono mostrate prima e dopo quella riga in modo che possiamo vedere il contesto di quella riga nel file.
La linea tratteggiata con 1,7 nel mezzo ci dice che ora stiamo vedendo le linee alfa2. Ancora, stiamo guardando le righe da uno a sette, con la parola Dave sulla riga quattro contrassegnata come differente.
Tre righe di contesto sopra e sotto ogni modifica sono l'impostazione predefinita. Puoi specificare quante righe di contesto vuoi diff
Fornire. Per fare questo, usa el -C
(contesto copiato) con un “C” mayúscula y proporcione el número de líneas que desea:
colordiff -C 2 alfa1 alfa2
Il secondo diff
L'opzione che fornisce il contesto è il -u
opzione (contesto unificato).
colordiff -u alpha1 alpha2
Come prima, abbiamo un'intestazione nell'output. I due file vengono nominati e vengono visualizzati i loro tempi di modifica. Ci sono script (-
) prima del nome alfa1 e dei segni più (+
) prima del nome alpha2. Questo ci dice che i trattini saranno usati per riferirsi ad alpha1 e i segni più saranno usati per riferirsi ad alpha2. Sparse in tutto l'elenco ci sono linee che iniziano con segni (@
). Queste linee segnano l'inizio di ogni differenza. Ci dicono anche quali linee vengono mostrate da ciascun file.
Le tre linee sono mostrate prima e dopo la linea contrassegnata come diversa in modo che possiamo vedere il contesto della linea modificata. Nella vista unificata, le righe con la differenza vengono visualizzate una sopra l'altra. La linea alpha1 è preceduta da un trattino e la linea alpha2 è preceduta da un segno più. Questa schermata realizza in otto righe ciò che la schermata di contesto copiata sopra ha impiegato quindici per fare.
Come potremmo aspettare?, possiamo chiedere diff
per fornire esattamente il numero di righe di contesto unificato che vorremmo vedere. Per fare questo, usa el -U
(contesto unificato) con un “tu” mayúscula y proporcione la cantidad de líneas que desea:
colordiff -U 2 alfa1 alfa2
Ignora spazi bianchi e maiuscole
Analizziamo altri due file, test4 e test5. Questi hanno i sei nomi di supereroi su di loro.
colordiff -y -W 70 prova4 prova5
I risultati mostrano che diff
non trova nulla di diverso con le linee Black Widow, Spider-Man e Thor. Mark cambia con le linee di Captain America, Ironman e Hulk.
Quindi, Ciò che è diverso? Bene, un test5, Hulk se escribe con una “h” minúscula y el Capitán América tiene un espacio adicional entre “Capitán” e “América”. Va bene, è facile da vedere, ma che dire della linea ironman?? Non ci sono differenze visibili. Ecco una buona regola pratica. Se non riesci a vederlo, la soluzione è uno spazio vuoto. C'è quasi certamente uno spazio sprecato o due, o un carattere di tabulazione, alla fine di quella riga.
Se non ti interessa, puoi istruire diff
ignorare tipi specifici di differenza di linea, Compreso:
- -io: Ignora le differenze tra maiuscole e minuscole.
- -INSIEME A: Ignora gli spazi vuoti finali.
- -B: Ignora i cambiamenti nella quantità di spazio bianco.
- -w: Ignora tutte le modifiche agli spazi bianchi.
Chiediamo a diff di controllare di nuovo quei due file, ma questa volta per ignorare qualsiasi differenza nel caso.
colordiff -i -y -W 70 prova4 prova5
Las líneas con “The Hulk” e “The Hulk” ahora se consideran una coincidencia, y no se marca ninguna diferencia para la “h” minuscolo. Chiediamo diff
ignorare anche gli spazi bianchi finali.
colordiff -i -Z -y -W 70 prova4 prova5
Come sospettato, il vuoto finale deve essere stato la differenza nella linea Ironman perché diff
non fa più differenza per quella linea. Questo lascia Capitan America. Chiediamo diff
ignora il caso e ignora tutti problemi di spazi bianchi.
colordiff -i -w -y -W 70 prova4 prova5
conteggio diff
ignorare le differenze che non ci riguardano, diff
ci dice che, per i nostri scopi, i file corrispondono.
il diff
Il comando ha molte più opzioni, ma la maggior parte di essi riguarda la produzione di risultati leggibili dalla macchina. Questi possono essere rivisti su Linux pagina man. Le alternative che abbiamo usato negli esempi sopra ti permetteranno di rintracciare tutte le differenze tra le versioni dei tuoi file di testo, usando la riga di comando e gli occhi umani.
impostaTimeout(funzione(){
!funzione(F,B,e,v,n,T,S)
{Se(f.fbq)Restituzione;n=f.fbq=funzione(){n.callMethod?
n.callMethod.apply(n,argomenti):n.queue.push(argomenti)};
Se(!f._fbq)f._fbq = n;n.push=n;n.loaded=!0;n.version='2.0′;
n.coda=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(T,S) } (window, documento,'copione',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('dentro', '335401813750447');
fbq('traccia', 'Visualizzazione della pagina');
},3000);