Come usare i file Diff in Linux

Come usare i file Diff in Linux

Diff è uno strumento a riga di comando per i sistemi Unix che consente di confrontare due file o directory e vedere le differenze tra loro. È ideale per confrontare versioni vecchie e nuove di file per vedere cosa è cambiato. In questo articolo, ti mostriamo come puoi usare diffper confrontare facilmente i file in Linux.

Confronto di file con diff

  • Apri una finestra di terminale.
  • Digita diffe i percorsi di due file che desideri confrontare. In questo caso, sto confrontando due piccoli programmi C sul mio desktop usando il seguente comando:

diff ~/Desktop/hello.c ~/Desktop/hello-1.c

Una finestra di terminale che mostra un comando diff.
  • Premere Enterper inviare il comando. Il display risultante ti mostrerà tutte le diverse righe tra i file. I numeri di riga confrontati verranno visualizzati come “1c1”, a indicare che la prima riga è stata modificata e sono state rilevate le seguenti differenze.
Una finestra di terminale che mostra l'output di un comando diff.
  • Per vedere una vista affiancata dei file e delle loro differenze, usa il -yflag dopo diff. Per esempio:

diff -y ~/Desktop/hello.c ~/Desktop/hello-1.c

Una finestra di terminale che mostra un comando che stamperà una differenza visiva.

Qualsiasi linea con un simbolo pipe ( |) è una linea con una differenza. Assicurati solo di espandere prima la finestra del terminale, altrimenti potresti avere difficoltà a vedere il display.

Una finestra di terminale che mostra l'output di un comando visual diff.

Confronto di file con Meld

diffÈ possibile accedere alla funzionalità di anche tramite Meld , una GUI per diff. Considerando che l’interfaccia utente di diff può essere difficile da gestire, Meld è uno strumento utile.

  • Installa Meld dalla riga di comando aprendo il terminale e digitando:

sudo apt -y install meld

O

sudo dnf -y install meld

per distribuzioni basate su RPM.

Questo inizializzerà il gestore di pacchetti apt e inizierà l’installazione di Meld. Si noti che il -yflag dirà automaticamente “sì” a qualsiasi richiesta; rimuovilo se preferisci confermare le richieste manualmente.

Una finestra di terminale che mostra il comando di installazione per Meld.
  • Inserisci la tua password di amministratore quando richiesto. Quando vedi di nuovo il prompt dei comandi, l’installazione è terminata e Meld può essere aperto.
Una finestra di terminale che mostra il processo di installazione di Meld.
  • Quando apri Meld, vedrai tre opzioni: Confronto file, Confronto directory e Visualizzazione controllo versione. Fare clic su “File”.
Uno screenshot della schermata di benvenuto di Meld.
  • Appariranno due menu a discesa, entrambi con la scritta “(Nessuno).” Fare clic su uno per selezionare un file per il confronto.
Uno screenshot della schermata Meld con un'evidenziazione sul primo selezionatore di file.
  • Fare clic sull’altro menu a discesa per selezionare un secondo file per il confronto.
Uno screenshot della schermata Meld con un'evidenziazione sul secondo selezionatore di file.
  • Fare clic sul pulsante “Confronta”.
Uno screenshot della schermata Combinazione con un'evidenziazione sul pulsante Confronta.
  • La finestra successiva riassume le eventuali differenze riscontrate tra due file. I caratteri rossi sono differenze e lo sfondo blu indica che c’è una differenza in quella riga. Uno sfondo verde indica che esiste una riga in un file ma non nell’altro.
Uno screenshot del programma Meld con una semplice vista di confronto tra due file.
  • Per navigare tra le differenze, fai clic sui pulsanti su e giù nella barra dei menu. Puoi anche fare clic direttamente nel documento con il mouse.
Uno screenshot del programma Meld che evidenzia il suo pulsante di navigazione diff.

Manipolare i file in Meld

Oltre a fare confronti, Meld ti consente di modificare i file confrontati. Meld continuerà ad analizzare il documento per le modifiche mentre modifichi una delle due versioni e puoi premere Ctrl+ Zin qualsiasi momento per annullare le modifiche.

  • Per copiare le modifiche da un file all’altro, fai clic sulle piccole frecce nere tra le modifiche. Facendo clic sulla freccia a sinistra, ad esempio, verrà utilizzata la riga del documento a sinistra per sovrascrivere il documento a destra.
Uno screenshot del programma Meld che mostra i pulsanti di risoluzione delle differenze.
  • Le linee possono anche essere inserite nei documenti senza sovrascrivere. Se tieni premuto il Ctrltasto, vedrai le frecce dell’ultimo passaggio trasformarsi in segni più. Fare clic sull’icona per aprire una piccola finestra di dialogo in cui è possibile scegliere dove inserire una nuova riga.
Uno screenshot del programma Meld che mostra il prompt per l'aggiunta di diff.
  • Infine, digita direttamente nel tuo documento. Basta inserire il cursore come faresti normalmente e iniziare a digitare.
  • Dopo aver apportato le modifiche, fai clic sul pulsante “Salva” per salvare i file.
Uno screenshot del programma Meld che evidenzia il suo pulsante di salvataggio per file.

Creazione di file diff utilizzando Meld e diff

Oltre a mostrare le differenze tra due file, puoi anche usare Meld per creare “file diff”. Si tratta di piccole parti di testo che contengono istruzioni su come applicare le modifiche da una versione del file a un’altra. Ciò è utile se si desidera distribuire rapidamente gli aggiornamenti del codice senza ricondividere l’intero archivio di origine.

  • Apri i due file che desideri confrontare.
Uno screenshot del programma Meld che mostra un semplice diff.
  • Fai clic sul menu Opzioni nell’angolo in alto a destra della finestra.
Uno screenshot che evidenzia il pulsante delle opzioni di Meld.
  • Selezionare il sottomenu “Confronto”.
Uno screenshot del menu delle opzioni di Meld con un'evidenziazione nel sottomenu Confronto.
  • Fai clic sull’opzione secondaria “Formatta come patch”.
Uno screenshot del sottomenu Confronto con un'evidenziazione sull'opzione secondaria Formato.
  • Questo aprirà una piccola finestra in cui Meld stamperà l’intero file diff tra i tuoi due file. A questo punto, puoi copiare questo testo negli appunti o salvarlo in un file. Per fare quest’ultimo, fai clic sul pulsante “Salva patch”.
Uno screenshot della sottofinestra Meld's Patch con un'evidenziazione sul

Sebbene la creazione di file diff all’interno di Meld sia semplice e diretta, ci sono casi in cui potrebbe non essere possibile accedere a una GUI durante la modifica del codice. Per questo, puoi anche utilizzare il diffprogramma per generare un file diff.

  • Apri un terminale e controlla se ci sono differenze tra i due file:

diff hello.c hello-1.c

Un terminale che mostra una semplice differenza tra due file.
  • Crea un semplice file diff usando il -cflag:

diff -c hello.c hello-1.c > hello.diff

Un terminale che mostra un output di file diff di base.
  • Facoltativamente, utilizza l’ -uopzione che combina i due flussi di testo in un unico blocco diff unificato. Questo può essere utile se stai modificando molto codice e vuoi risparmiare spazio su disco:

diff -u hello.c hello-1.c > hello.diff

Un terminale che mostra un output diff unificato più complesso.

Utilizzo di file diff per correggere il codice sorgente

Come discusso in precedenza, un file diff consente di creare un riepilogo facilmente condivisibile delle modifiche apportate al codice sorgente. Tuttavia, diff stesso non può applicarli ai file esistenti. Per farlo, usa il programma compagno di diff, patch.

  • Determina il codice sorgente originale che il file diff sta tentando di modificare:

cat hello.diff | sed 1q

Un terminale che mostra l'intestazione del file sorgente originale.
  • Crea un backup del tuo codice sorgente originale:

cp hello.c hello.c.old

  • Eseguire il programma patch con il file originale sul primo argomento e il file diff sul secondo:

patch hello.c hello.diff

Un terminale che mostra un semplice comando di patch a un singolo file sorgente.

È importante notare che un file diff può anche contenere modifiche che si estendono su più file. Applicalo posizionando tutti i file necessari per l’aggiornamento in una singola directory ed eseguendo patch < multi-file.diff.

  • Controlla se il programma di patch ha aggiornato correttamente il tuo file sorgente confrontandolo con il tuo backup:

diff -y hello.c hello.c.old

Un terminale che mostra la differenza visiva tra il nuovo e il file sorgente originale.

Cordiali saluti: Git è un potente programma di controllo della versione multipiattaforma. Scopri come puoi usarlo per gestire i tuoi repository di codice sorgente in Linux.

Domande frequenti

È possibile correggere un file più volte?

SÌ. Tuttavia, è importante notare che il valore del numero di riga all’interno di un file diff è statico. Ad esempio, l’applicazione di un diff che aggiunge cinque righe di codice alla riga 1 regolerà l’intero file di cinque righe. Mentre gli strumenti moderni possono compensare le modifiche da singole differenze, l’applicazione di più di una può creare conflitti di codice non necessari.

Un file diff è simile a una patch Git?

SÌ. Sia diff che Git usano un tipo di formato simile per le loro patch di codice. Di conseguenza, puoi scambiare le due utilità quando applichi gli aggiornamenti al tuo codice sorgente. Ad esempio, correre git apply hello.diffequivale a correre patch < hello.diff.

Puoi usare Meld con un programma di controllo della versione come Git?

SÌ. Una delle caratteristiche più potenti di Meld è che può funzionare in modo trasparente con qualsiasi programma di controllo della versione. Ciò ti dà la possibilità di interagire facilmente con i tuoi repository al di fuori dell’interfaccia del terminale.

Per fare ciò, premere Ctrl+ N, quindi fare clic sul pulsante “Vista controllo versione”. Quindi, fai clic sulla casella a discesa sotto di essa e seleziona “Altro”. Questo farà apparire una piccola finestra in cui puoi vedere e caricare il tuo repository Git.

Credito immagine: Unsplash . Tutti gli screenshot di Ramces Red.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *