Πώς να συγκρίνετε και να συγχωνεύσετε αρχεία χρησιμοποιώντας την εντολή 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, το οποίο είναι ιδιαίτερα χρήσιμο για το χειρισμό πολλαπλών εκδόσεων του ίδιου αρχείου και την επίλυση διενέξεων κατά τη συγχώνευση αλλαγών.
Κατανοώντας τη βασική χρήση και τις επιλογές του, μπορείτε να διαχειριστείτε αποτελεσματικά τις εκδόσεις αρχείων και να συνεργαστείτε με άλλους σε έργα.