Πώς να συγκρίνετε και να συγχωνεύσετε αρχεία χρησιμοποιώντας την εντολή diff3 στο Linux


Η εντολή diff3 στο Linux είναι ένα χρήσιμο εργαλείο που συγκρίνει τρία αρχεία και δείχνει τις διαφορές τους, το οποίο είναι κυρίως χρήσιμο για προγραμματιστές και διαχειριστές συστημάτων που εργάζονται με πολλές εκδόσεις του ίδιου αρχείου και πρέπει να τα συγχωνεύσουν ή προσδιορίζει τις αλλαγές μεταξύ διαφορετικών εκδόσεων.

Σε αυτό το άρθρο, θα εξετάσουμε τα βασικά της χρήσης της εντολής diff3, τις κοινές επιλογές της και μερικά παραδείγματα για να κατανοήσουμε πώς λειτουργεί στο Linux.

Τι είναι η εντολή diff3;

Το diff3 είναι ένα εργαλείο που συγκρίνει τρία αρχεία γραμμή προς γραμμή, εντοπίζει τις διαφορές και τα εμφανίζει σε μορφή που είναι εύκολα κατανοητή.

Μπορεί να χρησιμοποιηθεί για:

  • Βρείτε διαφορές μεταξύ των τριών αρχείων.
  • Αυτόματη συγχώνευση αλλαγών από διαφορετικά αρχεία.
  • Χειριστείτε τις διενέξεις που προκύπτουν κατά τη συγχώνευση εκδόσεων αρχείων.

Η εντολή diff3 είναι παρόμοια με την εντολή diff ή την εντολή sdiff, αλλά λειτουργεί με τρία αρχεία αντί για δύο, κάτι που είναι ιδιαίτερα χρήσιμο όταν έχετε πολλούς συνεργάτες που εργάζονται στο ίδιο αρχείο, και πρέπει να συγχωνεύσετε τις αλλαγές τους σε μια ενιαία έκδοση.

Βασική σύνταξη της εντολής diff3

Η βασική σύνταξη της εντολής diff3 είναι:

diff3 [options] file1 file2 file3

Επεξήγηση της παραπάνω εντολής.

  • file1: Η πρώτη έκδοση του αρχείου.
  • file2: Η δεύτερη έκδοση του αρχείου.
  • file3: Η τρίτη έκδοση του αρχείου.

Επιλογές που χρησιμοποιούνται συνήθως

Ακολουθούν ορισμένες επιλογές που χρησιμοποιούνται συνήθως για την εντολή diff3:

  • -e: Δημιουργήστε ένα σενάριο επεξεργασίας που μπορεί να χρησιμοποιηθεί για την εφαρμογή αλλαγών σε ένα αρχείο.
  • -m: Αυτόματη συγχώνευση των αρχείων.
  • -A: Συμπεριλάβετε όλες τις αλλαγές από όλα τα αρχεία.
  • -E: Προσπαθήστε να συγχωνεύσετε αρχεία ακόμα και αν εντοπιστούν διενέξεις.
  • -3: Εμφάνιση μόνο αλλαγών που διαφέρουν μεταξύ των τριών αρχείων.

Εύρεση διαφορών μεταξύ αρχείων στο Linux

Ας υποθέσουμε ότι έχετε τρία αρχεία: file1.txt, file2.txt και file3.txt. Κάθε αρχείο περιέχει μια ελαφρώς διαφορετική έκδοση του ίδιου περιεχομένου και θέλετε να τα συγκρίνετε για να δείτε πού βρίσκονται οι διαφορές.

Για να συγκρίνετε αυτά τα τρία αρχεία, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή:

diff3 file1.txt file2.txt file3.txt

Δείτε τι σημαίνει αυτή η έξοδος:

  • 1:2c: Αυτό δείχνει ότι στο file1.txt, η αλλαγή συμβαίνει στη γραμμή 2 και το περιεχόμενο της γραμμής 2 είναι This is line 2..
  • 2:2c: Αυτό δείχνει ότι στο file2.txt, η αλλαγή συμβαίνει επίσης στη γραμμή 2, αλλά το περιεχόμενο αυτής της γραμμής έχει τροποποιηθεί σε This is modified line 2. .
  • 3:2,3c: Αυτό δείχνει ότι στο file3.txt, υπάρχουν αλλαγές στις γραμμές 2 και 3. Η γραμμή 2 παραμένει η ίδια (Αυτή είναι η γραμμή 2.), αλλά η γραμμή 3 είναι μια πρόσθετη γραμμή που δηλώνει: Αυτή είναι μια προστιθέμενη γραμμή..

Συγχώνευση αρχείων με το diff3 στο Linux

Εάν θέλετε να συγχωνεύσετε τα τρία αρχεία και να δημιουργήσετε ένα νέο αρχείο με όλες τις αλλαγές, μπορείτε να χρησιμοποιήσετε την επιλογή -m:

diff3 -m file1.txt file2.txt file3.txt

Αυτό θα παράγει το συγχωνευμένο περιεχόμενο με δείκτες διένεξης που δείχνουν πού υπάρχουν αντικρουόμενες αλλαγές.

Δείτε τι σημαίνει αυτή η έξοδος:

  • <<<<<< file1.txt: Αυτό σηματοδοτεί την έναρξη μιας διένεξης και εμφανίζει την έκδοση από το file1.txt.
  • <κωδικός>||||||| file2.txt: Αυτή η γραμμή δείχνει το περιεχόμενο από το file2.txt (μεσαίο αρχείο στη σύγκριση).
  • =======: Αυτό διαχωρίζει τις γραμμές που βρίσκονται σε διένεξη.
  • >>>>>>> file3.txt: Αυτό επισημαίνει την έκδοση από το file3.txt και το τέλος του μπλοκ διένεξης.

Μπορείτε να το επεξεργαστείτε χειροκίνητα για να διατηρήσετε τις αλλαγές που θέλετε.

Εφαρμογή αλλαγών από πολλά αρχεία σε ένα με diff3

Μπορείτε επίσης να χρησιμοποιήσετε το diff3 για να δημιουργήσετε ένα σενάριο ed που εφαρμόζει αλλαγές από file2.txt και file3.txt σε file1.txt. Αυτό μπορεί να γίνει χρησιμοποιώντας την επιλογή -e:

diff3 -e file1.txt file2.txt file3.txt > scriptfile

Αυτή η εντολή δημιουργεί ένα αρχείο με το όνομα scriptfile που περιέχει το σενάριο που δημιουργήθηκε, το οποίο μπορείτε να χρησιμοποιήσετε την εντολή ed για να εφαρμόσετε το σενάριο από το scriptfile στο file1.txt.

ed file1.txt < scriptfile

Αυτό θα τροποποιήσει το file1.txt σύμφωνα με τις αλλαγές που καθορίζονται στο scriptfile, μπορείτε να επαληθεύσετε με την ακόλουθη εντολή cat για να δείτε εάν έχουν εφαρμοστεί οι αλλαγές:

cat file1.txt

Αυτό είναι χρήσιμο εάν θέλετε να αυτοματοποιήσετε τη συγχώνευση αρχείων χρησιμοποιώντας σενάρια.

Επίλυση διενέξεων στις συγχωνεύσεις diff3

Όταν χρησιμοποιείτε το diff3 για συγχώνευση, ενδέχεται να προκύψουν διενέξεις όταν υπάρχουν διαφορές μεταξύ και των τριών αρχείων στην ίδια τοποθεσία. Αυτές οι διενέξεις επισημαίνονται στην έξοδο και θα πρέπει να τις επιλύσετε με μη αυτόματο τρόπο.

  • Για να επιλύσετε διενέξεις, ανοίξτε το αρχείο που περιέχει τους δείκτες διένεξης.
  • Επεξεργαστείτε το αρχείο για να αφαιρέσετε τις ανεπιθύμητες γραμμές και να διατηρήσετε τις αλλαγές που θέλετε.
  • Αφού επιλύσετε τη διένεξη, αποθηκεύστε το αρχείο.
Σύναψη

Η εντολή diff3 είναι ένα ισχυρό εργαλείο για τη σύγκριση και τη συγχώνευση τριών αρχείων στο Linux, το οποίο είναι ιδιαίτερα χρήσιμο για το χειρισμό πολλαπλών εκδόσεων του ίδιου αρχείου και την επίλυση διενέξεων κατά τη συγχώνευση αλλαγών.

Κατανοώντας τη βασική χρήση και τις επιλογές του, μπορείτε να διαχειριστείτε αποτελεσματικά τις εκδόσεις αρχείων και να συνεργαστείτε με άλλους σε έργα.