Εντολή Linux Diff

Entole Linux Diff



Η διαφορά είναι πιο πιθανό να είναι μια έννοια ή ένα συναίσθημα που μπορεί να διακρίνει ένα πράγμα από το άλλο. Η εντολή 'diff' αναφέρεται σε παραλλαγή. Αναλύοντας τα έγγραφα γραμμή προς γραμμή, αυτό το εργαλείο δείχνει τις διακρίσεις μεταξύ των αρχείων. Μας ενημερώνει ποιες ενότητες σε ένα έγγραφο πρέπει να τροποποιηθούν για να δημιουργηθούν παρόμοια έγγραφα, σε αντίθεση με τα συνοδευτικά στοιχεία cmp και comm. Η κρίσιμη πτυχή που πρέπει να έχετε κατά νου είναι ότι για να είναι παρόμοια τα έγγραφα, το diff χρησιμοποιεί συγκεκριμένα ειδικά σύμβολα και εντολές. Σας δίνονται οδηγίες σχετικά με τον τρόπο τροποποίησης του πρώτου εγγράφου, ώστε να είναι συνεπές με το άλλο έγγραφο. Σε αυτόν τον οδηγό, θα συζητήσουμε τη χρήση της εντολής 'diff' στο Ubuntu 20.04 χρησιμοποιώντας το τερματικό Linux.

Δημιουργήσαμε δύο αρχεία κειμένου στον φάκελο εργασίας του συστήματός μας.









Ήρθε η ώρα να χρησιμοποιήσετε την εντολή 'διαφορά' σε μια περιοχή ερωτήματος για να εμφανίσετε τη διαφορά μεταξύ των δύο περιεχομένων αρχείων. Δοκιμάζουμε αυτήν την εντολή 'διαφορά' και με τα δύο ονόματα αρχείων σε μια ακολουθία, δηλαδή ένα αρχείο one.txt και μετά αρχείο two.txt. Η εκτέλεση της εντολής 'diff' μας δείχνει τη διαφορά μεταξύ των δύο αρχείων ως:



  • Αριθμοί γραμμών σύμφωνα με το πρώτο αρχείο κειμένου.
  • Ειδικοί χαρακτήρες/σύμβολα για να μας ενημερώσουν για τη διαφορά όπως αλλαγή, προσθήκη, διαγραφή.
  • Αριθμοί γραμμών σύμφωνα με το δεύτερο αρχείο κειμένου.

Στην πρώτη μας απεικόνιση, επεξεργαζόμαστε το σύμβολο 'a' μεταξύ των αριθμών γραμμής της εξόδου εντολής 'diff'. Το 'a' χρησιμοποιείται ως συντομογραφία του 'Add'. Η χρήση της εντολής 'cat' και με τα δύο ονόματα αρχείων στην περιοχή ερωτήματος εμφανίζει ξεχωριστά το περιεχόμενο μέσα σε κάθε αρχείο κειμένου, δηλαδή one.txt και two.txt. Έχουμε συνολικά 4 γραμμές μέσα στο πρώτο αρχείο ενώ το δεύτερο αρχείο περιέχει 5 γραμμές. Η γραμμή 1 είναι επιπλέον.





Στη συνέχεια, δοκιμάζουμε την εντολή «διαφορά» στην περιοχή ερωτήματος τερματικού ακολουθούμενη από τα ονόματα των αρχείων – one.txt και two.txt. Η εκτέλεση αυτής της εντολής εμφανίζει το '0a1' ως έξοδο μαζί με τη γραμμή 1 από το δεύτερο αρχείο που είναι μια επιπλέον γραμμή στο δεύτερο αρχείο. Η αριθμητική τιμή '0' χρησιμοποιείται για τη γραμμή 0 ή πριν από τη γραμμή 1 του πρώτου αρχείου, δηλαδή one.txt. Το σύμβολο 'a' σημαίνει 'προσθήκη'. Τέλος, η αριθμητική τιμή «1» σημαίνει την πρώτη γραμμή του δεύτερου αρχείου. Η έξοδος μίξης '0d1' σημαίνει ότι η γραμμή 1 του δεύτερου αρχείου 'two.txt' πρέπει να προστεθεί στην κορυφή του πρώτου αρχείου 'one.txt' πριν η πρώτη γραμμή δύο κάνει και τα δύο αρχεία ίδια.



Τώρα, ενημερώνουμε και τα δύο αρχεία για να δούμε μια άλλη απεικόνιση. Το πρώτο αρχείο 'one.txt' περιέχει 4 γραμμές και το δεύτερο αρχείο 'two.txt' περιέχει μόνο 3 γραμμές. Η μόνη διαφορά για αυτά τα αρχεία είναι η χρήση μιας επιπλέον γραμμής στο πρώτο αρχείο, δηλαδή γραμμή 1 = «Δευτέρα» που δεν υπάρχει στο δεύτερο αρχείο. Αφού δοκιμάσουμε την οδηγία 'διαφορά' για τα ενημερωμένα αρχεία κειμένου, βγάζουμε '1d0' ως έξοδο. Και εμφανίζεται η πρώτη γραμμή από το πρώτο αρχείο. Στο '1d0', το 1 σημαίνει ότι η πρώτη γραμμή από το αρχείο 'one.txt' πρέπει να διαγραφεί (σύμφωνα με το σύμβολο 'd') και το 0 σημαίνει ότι το δεύτερο αρχείο δεν ενημερώθηκε. Στο τέλος, εμφανίζεται η γραμμή 1 από το πρώτο αρχείο 'one.txt' για τη σαφή διαφορά.

Ομοίως, η εντολή 'diff' μπορεί να εμφανίσει μια διαφορά μεταξύ των γραμμών δύο αρχείων. Επομένως, ενημερώνουμε και τα δύο αρχεία κειμένου ξανά. Αυτή τη φορά, το πρώτο αρχείο περιέχει 5 γραμμές ενώ το δεύτερο αρχείο περιέχει μόνο 4. Η μόνη διαφορά είναι η χρήση μιας επιπλέον γραμμής στο one.txt που είναι η γραμμή 3. Η εντολή diff που χρησιμοποιείται και στα δύο αρχεία στο τερματικό εμφανίζει ένα έξοδος '3d2' μαζί με τη γραμμή 3 από το πρώτο αρχείο 'one.txt'. Αυτή η έξοδος δείχνει ότι η γραμμή 3 από το πρώτο αρχείο 'one.txt' πρέπει να διαγραφεί, ώστε να μπορούμε να συγχρονίσουμε και τα δύο αρχεία στη γραμμή 2 του δεύτερου αρχείου. Εμφανίζεται η διαφορετική γραμμή '3' ώστε να έχουμε μια σαφή ιδέα για τη διαφορά.

Ας δούμε μια σαφή και βαθύτερη ματιά στην έξοδο. Η έξοδος 1,5c1,2 από την παρακάτω εικόνα δείχνει ότι οι γραμμές 1 έως 5 ενός πρώτου αρχείου (one.txt) πρέπει να αλλάξουν με τις γραμμές 1 έως 2 ενός δεύτερου αρχείου (two.txt). Σημαίνει ότι οι πρώτες 5 γραμμές (1 έως 5) του αρχείου one.txt πρέπει να αλλάξουν και να αντικατασταθούν με τις δύο πρώτες γραμμές (1, 2) του δεύτερου αρχείου 'two.txt' για να γίνει το ίδιο. Στο τέλος εμφανίζονται και οι 5 γραμμές από το πρώτο αρχείο που θα πρέπει να αντικατασταθούν με τις εμφανιζόμενες 2 γραμμές του δεύτερου αρχείου. Αυτός είναι ο τρόπος με τον οποίο το σύμβολο 'c' λέει τη διαφορά μεταξύ δύο αρχείων - καμία γραμμή δεν είναι ίδια και στα δύο αρχεία.

Η εντολή 'diff' σάς επιτρέπει να λαμβάνετε την έξοδο της σε μια φόρμα περιβάλλοντος. Φανταστείτε ότι έχετε τα ίδια δύο αρχεία με τα ακόλουθα δεδομένα σε αυτά τα αρχεία. Το πλαίσιο γύρω από την έξοδο θα ήταν να εμφανιστεί η κύρια διαφορά μεταξύ των συνολικών απλών αρχείων που εμφανίζονται στην παρακάτω εικόνα. Τώρα, έχουμε 5 γραμμές στο πρώτο αρχείο 'one.txt' και 4 γραμμές στο δεύτερο αρχείο 'two.txt'.

Για να λάβουμε την έξοδο βάσει περιβάλλοντος της εντολής 'diff', πρέπει να χρησιμοποιήσουμε την επιλογή '-c' στην εντολή 'diff'. Χρησιμοποιώντας τα προηγουμένως ενημερωμένα αρχεία σε αυτήν την εντολή 'διαφορά', λαμβάνουμε την ακόλουθη έξοδο - ημερομηνία, ημέρα, μαζί με τις επιπλέον πληροφορίες σχετικά με τη δημιουργία κειμένου μέσα στα αρχεία. Εμφανίζονται οι 5 γραμμές από τα αρχεία one.txt. Ειδικότερα, η τρίτη γραμμή του επισημαίνεται χρησιμοποιώντας τον χαρακτήρα '-' για να την προσθέσετε απλώς σε άλλο αρχείο.

συμπέρασμα

Προσπαθήσαμε να εξηγήσουμε εν συντομία τα πάντα σχετικά με την οδηγία «διαφορά». Για αυτό, ενημερώναμε τα αρχεία κειμένου μας κάθε φορά και λάβαμε μια ενημερωμένη έξοδο για την προσθήκη, την αφαίρεση και την αλλαγή των δεδομένων σε ένα αρχείο. Η εισαγωγή εξήγησε τον σκοπό της χρήσης της εντολής 'diff' στο Linux και πώς να τη χρησιμοποιήσετε για το Linux.