LFCS #1: Πώς να χρησιμοποιήσετε την εντολή 'sed' για χειρισμό αρχείων στο Linux


Το Linux Foundation ανακοίνωσε την πιστοποίηση LFCS (Linux Foundation Certified Sysadmin), ένα νέο πρόγραμμα που στοχεύει να βοηθήσει άτομα σε όλο τον κόσμο να πιστοποιηθούν σε βασικές έως ενδιάμεσες εργασίες διαχείρισης συστήματος για συστήματα Linux.

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

Από την τελευταία αναθεώρηση στις 11 Αυγούστου 2023, έχουμε υπολογίσει σχολαστικά τους τομείς και τις αρμοδιότητες, ευθυγραμμιζόμενοι με την ημερομηνία έναρξης ισχύος της 11 Μαΐου 2023, όπως δηλώθηκε επίσημα από το Ίδρυμα Linux.

Η σειρά θα έχει τίτλο Preparation for the LFCS (Linux Foundation Certified Sysadmin) Parts 1 έως 33 και καλύπτει το τα ακόλουθα θέματα:

Part 1

Πώς να χρησιμοποιήσετε την εντολή "Sed" για χειρισμό αρχείων στο Linux

Part 2

Πώς να εγκαταστήσετε και να χρησιμοποιήσετε το Vi/Vim στο Linux

Part 3

Πώς να συμπιέσετε αρχεία και καταλόγους και να βρείτε αρχεία στο Linux

Part 4

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

Part 5

Προσάρτηση/Αποπροσάρτηση τοπικών και δικτυακών συστημάτων αρχείων (Samba & NFS) στο Linux

Part 6

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

Part 7

Διαχείριση Διαδικασίας και Υπηρεσιών Εκκίνησης Συστήματος (SysVinit, Systemd και Upstart

Part 8

Τρόπος διαχείρισης χρηστών και ομάδων, δικαιωμάτων αρχείων και πρόσβασης Sudo

Part 9

Διαχείριση πακέτων Linux με Yum, RPM, Apt, Dpkg, Aptitude και Zypper

Part 10

Εκμάθηση βασικών σεναρίων κελύφους και αντιμετώπισης προβλημάτων συστήματος αρχείων

Part 11

Πώς να διαχειριστείτε και να δημιουργήσετε LVM χρησιμοποιώντας εντολές vgcreate, lvcreate και lvexend

Part 12

Πώς να εξερευνήσετε το Linux με εγκατεστημένα έγγραφα βοήθειας και εργαλεία

Part 13

Τρόπος ρύθμισης παραμέτρων και αντιμετώπισης προβλημάτων Grand Unified Bootloader (GRUB)

Part 14

Παρακολουθήστε τη χρήση πόρων των διεργασιών Linux και ορίστε όρια διεργασιών με βάση τον χρήστη

Part 15

Πώς να ορίσετε ή να τροποποιήσετε παραμέτρους χρόνου εκτέλεσης πυρήνα σε συστήματα Linux

Part 16

Εφαρμογή υποχρεωτικού ελέγχου πρόσβασης με το SELinux ή το AppArmor στο Linux

Part 17

Τρόπος ορισμού λιστών ελέγχου πρόσβασης (ACL) και ορίων δίσκου για χρήστες και ομάδες

Part 18

Εγκατάσταση Υπηρεσιών Δικτύου και ρύθμιση παραμέτρων της αυτόματης εκκίνησης κατά την εκκίνηση

Part 19

Ένας απόλυτος οδηγός για τη ρύθμιση του διακομιστή FTP για να επιτρέπει ανώνυμες συνδέσεις

Part 20

Ρυθμίστε έναν βασικό διακομιστή DNS αναδρομικής προσωρινής αποθήκευσης και διαμορφώστε τις ζώνες για τομέα

Part 21

Πώς να εγκαταστήσετε, να ασφαλίσετε και να συντονίσετε την απόδοση του διακομιστή βάσης δεδομένων MariaDB

Part 22

Πώς να εγκαταστήσετε και να ρυθμίσετε τον διακομιστή NFS για κοινή χρήση συστήματος αρχείων

Part 23

Πώς να ρυθμίσετε τον Apache με εικονική φιλοξενία βάσει ονόματος με πιστοποιητικό SSL

Part 24

Πώς να ρυθμίσετε ένα τείχος προστασίας Iptables για να ενεργοποιήσετε την απομακρυσμένη πρόσβαση σε υπηρεσίες στο Linux

Part 25

Πώς να μετατρέψετε ένα Linux σε δρομολογητή για να χειρίζεστε την κυκλοφορία στατικά και δυναμικά

Part 26

Πώς να ρυθμίσετε κρυπτογραφημένα συστήματα αρχείων και να ανταλλάξετε χρησιμοποιώντας το εργαλείο Cryptsetup

Part 27

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

Part 28

Πώς να ρυθμίσετε ένα αποθετήριο δικτύου για εγκατάσταση ή ενημέρωση πακέτων

Part 29

Πώς να ελέγξετε την απόδοση, την ασφάλεια και την αντιμετώπιση προβλημάτων δικτύου

Part 30

Πώς να εγκαταστήσετε και να διαχειριστείτε εικονικές μηχανές και κοντέινερ

Part 31

Μάθετε τα βασικά του Git για την αποτελεσματική διαχείριση έργων

Part 32

Ένας οδηγός για αρχάριους για τη διαμόρφωση διευθύνσεων IPv4 και IPv6 στο Linux

Part 33

Ένας οδηγός για αρχάριους για τη δημιουργία σύνδεσης και γεφύρωσης δικτύου στο Ubuntu

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

Επεξεργασία ροών κειμένου σε Linux

Το Linux αντιμετωπίζει την είσοδο και την έξοδο από τα προγράμματα ως ροές (ή ακολουθίες) χαρακτήρων. Για να αρχίσουμε να κατανοούμε την ανακατεύθυνση και τους αγωγούς, πρέπει πρώτα να κατανοήσουμε τους τρεις πιο σημαντικούς τύπους ροών I/O (Είσοδος και Έξοδος), που είναι στην πραγματικότητα ειδικά αρχεία (κατά σύμβαση σε UNIX και Linux, ροές δεδομένων και περιφερειακά ή αρχεία συσκευών, αντιμετωπίζονται επίσης ως συνηθισμένα αρχεία).

Η διαφορά μεταξύ του > (τελεστής ανακατεύθυνσης) και του | (τελεστής αγωγού) είναι ότι ενώ ο πρώτος συνδέει μια εντολή με ένα αρχείο, ο δεύτερος συνδέει την έξοδο μιας εντολής με μια άλλη εντολή.

command > file
command1 | command2

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

Ένα πλεονέκτημα των σωλήνων σε συστήματα Linux και UNIX είναι ότι δεν υπάρχει ενδιάμεσο αρχείο που να εμπλέκεται με σωλήνα – το stdout της πρώτης εντολής δεν γράφεται σε ένα αρχείο και στη συνέχεια διαβάζεται από τη δεύτερη εντολή.

Για τις παρακάτω ασκήσεις εξάσκησης, θα χρησιμοποιήσουμε το ποίημα «Ένα χαρούμενο παιδί» (ανώνυμος συγγραφέας).

Χρησιμοποιώντας την εντολή sed

Το όνομα sed είναι σύντομο για το πρόγραμμα επεξεργασίας ροής. Για όσους δεν είναι εξοικειωμένοι με τον όρο, ένα πρόγραμμα επεξεργασίας ροής χρησιμοποιείται για την εκτέλεση βασικών μετασχηματισμών κειμένου σε μια ροή εισόδου (ένα αρχείο ή μια είσοδος από μια διοχέτευση).

Αλλάξτε τα πεζά σε κεφαλαία στο αρχείο

Η πιο βασική (και δημοφιλής) χρήση του sed είναι η αντικατάσταση χαρακτήρων. Θα ξεκινήσουμε αλλάζοντας κάθε εμφάνιση του πεζού y σε UPPERCASE Y και ανακατευθύνοντας την έξοδο στο ahappychild2.txt.

Η σημαία g υποδεικνύει ότι το sed θα πρέπει να αντικαταστήσει όλες τις παρουσίες του όρου σε κάθε γραμμή του αρχείου. Εάν παραληφθεί αυτή η σημαία, το sed θα αντικαταστήσει μόνο την πρώτη εμφάνιση του όρου σε κάθε γραμμή.

Βασική σύνταξη Sed:
sed ‘s/term/replacement/flag’ file
Το παράδειγμά μας:
sed ‘s/y/Y/g’ ahappychild.txt > ahappychild2.txt

Αναζήτηση και αντικατάσταση του Word στο αρχείο

Εάν θέλετε να αναζητήσετε ή να αντικαταστήσετε έναν ειδικό χαρακτήρα (όπως /, \, &), θα πρέπει να διαφύγετε από αυτόν, στον όρο ή ανταλλακτικές χορδές, με κάθετο προς τα πίσω.

Για παράδειγμα, θα αντικαταστήσουμε τη λέξη και με ένα συμπλεκτικό σύμβολο. Ταυτόχρονα, θα αντικαταστήσουμε τη λέξη I με Εσείς όταν βρεθεί η πρώτη στην αρχή μιας γραμμής.

sed 's/and/\&/g;s/^I/You/g' ahappychild.txt

Στην παραπάνω εντολή, ένα ^ (σύμβολο caret) είναι μια πολύ γνωστή κανονική έκφραση που χρησιμοποιείται για να αναπαραστήσει την αρχή μιας γραμμής.

Όπως μπορείτε να δείτε, μπορούμε να συνδυάσουμε δύο ή περισσότερες εντολές αντικατάστασης (και να χρησιμοποιήσουμε κανονικές εκφράσεις μέσα σε αυτές) διαχωρίζοντάς τις με ερωτηματικό και περικλείοντας το σύνολο μέσα σε μονά εισαγωγικά.

Εκτύπωση επιλεγμένων γραμμών από ένα αρχείο

Μια άλλη χρήση του sed είναι η εμφάνιση (ή η διαγραφή) ενός επιλεγμένου τμήματος ενός αρχείου. Στο παρακάτω παράδειγμα, θα εμφανίσουμε τις πρώτες 5 γραμμές του /var/log/messages από τις 8 Ιουνίου.

sed -n '/^Jun  8/ p' /var/log/messages | sed -n 1,5p

Σημειώστε ότι από προεπιλογή, το sed εκτυπώνει κάθε γραμμή. Μπορούμε να παρακάμψουμε αυτήν τη συμπεριφορά με την επιλογή -n και στη συνέχεια να πούμε στον sed να εκτυπώσει (υποδεικνύεται με p) μόνο το τμήμα του αρχείου (ή του σωλήνα) που ταιριάζει με το μοτίβο (8 Ιουνίου στην αρχή της γραμμής στην πρώτη περίπτωση και γραμμές 1 έως 5 συμπεριλαμβανομένων στη δεύτερη περίπτωση).

Τέλος, μπορεί να είναι χρήσιμο κατά την επιθεώρηση σεναρίων ή αρχείων διαμόρφωσης να επιθεωρήσετε τον ίδιο τον κώδικα και να αφήσετε έξω σχόλια. Το ακόλουθο sed one-liner διαγράφει (d) κενές γραμμές ή εκείνες που ξεκινούν με # (ο χαρακτήρας | υποδηλώνει ένα boolean OR< μεταξύ των δύο κανονικών εκφράσεων).

sed '/^#\|^$/d' apache2.conf

Εντολή uniq

Η εντολή uniq μας επιτρέπει να αναφέρουμε ή να αφαιρούμε διπλές γραμμές σε ένα αρχείο, γράφοντας στο stdout από προεπιλογή. Πρέπει να σημειώσουμε ότι το uniq δεν εντοπίζει επαναλαμβανόμενες γραμμές εκτός εάν είναι γειτονικές.

Έτσι, το uniq χρησιμοποιείται συνήθως μαζί με μια προηγούμενη ταξινόμηση (η οποία χρησιμοποιείται για την ταξινόμηση γραμμών αρχείων κειμένου). Από προεπιλογή, η ταξινόμηση λαμβάνει το πρώτο πεδίο (χωρισμένο με κενά) ως πεδίο κλειδιού. Για να καθορίσουμε ένα διαφορετικό πεδίο κλειδιού, πρέπει να χρησιμοποιήσουμε την επιλογή -k.

Παραδείγματα εντολών Uniq

Η εντολή du -sch /path/to/directory/* επιστρέφει τη χρήση χώρου στο δίσκο ανά υποκαταλόγους και αρχεία εντός του καθορισμένου καταλόγου σε μορφή αναγνώσιμη από τον άνθρωπο (εμφανίζει επίσης ένα σύνολο ανά κατάλογο) και δεν παραγγείλετε την έξοδο κατά μέγεθος, αλλά κατά υποκατάλογο και όνομα αρχείου.

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

du -sch /var/* | sort –h

Μπορείτε να μετρήσετε τον αριθμό των συμβάντων σε ένα αρχείο καταγραφής κατά ημερομηνία λέγοντας uniq να πραγματοποιήσει τη σύγκριση χρησιμοποιώντας τους πρώτους 6 χαρακτήρες (-w 6) κάθε γραμμής (όπου η ημερομηνία καθορίζεται) και προσθέτοντας το πρόθεμα κάθε γραμμής εξόδου με τον αριθμό των εμφανίσεων (-c) με την ακόλουθη εντολή.

cat /var/log/mail.log | uniq -c -w 6

Τέλος, μπορείτε να συνδυάσετε ταξινόμηση και uniq (όπως είναι συνήθως). Εξετάστε το παρακάτω αρχείο με λίστα δωρητών, ημερομηνία δωρεάς και ποσό. Ας υποθέσουμε ότι θέλουμε να μάθουμε πόσοι μοναδικοί δωρητές υπάρχουν.

Θα χρησιμοποιήσουμε την ακόλουθη εντολή cat για να κόψουμε το πρώτο πεδίο (τα πεδία οριοθετούνται με άνω και κάτω τελεία), να ταξινομήσουμε με βάση το όνομα και να αφαιρέσουμε τις διπλές γραμμές.

cat sortuniq.txt | cut -d: -f1 | sort | uniq

Εντολή grep

Η εντολή grep αναζητά αρχεία κειμένου ή (έξοδος εντολών) για την εμφάνιση μιας καθορισμένης τυπικής έκφρασης και εξάγει οποιαδήποτε γραμμή που περιέχει μια αντιστοίχιση με την τυπική έξοδο.

Παραδείγματα εντολών Grep

Εμφάνιση των πληροφοριών από το /etc/passwd για το χρήστη gacanepa, αγνοώντας τα πεζά και πεζά.

grep -i gacanepa /etc/passwd

Εμφάνιση όλων των περιεχομένων του /etc του οποίου το όνομα αρχίζει με rc ακολουθούμενο από οποιονδήποτε μεμονωμένο αριθμό.

ls -l /etc | grep rc[0-9]

tr Χρήση εντολών

Η εντολή tr μπορεί να χρησιμοποιηθεί για τη μετάφραση (αλλαγή) ή τη διαγραφή χαρακτήρων από το stdin και την εγγραφή του αποτελέσματος στο stdout.

Αλλάξτε όλα τα πεζά σε κεφαλαία στο αρχείο sortuniq.txt.

cat sortuniq.txt | tr [:lower:] [:upper:]

Πιέστε τον οριοθέτη στην έξοδο του ls –l σε ένα μόνο διάστημα.

ls -l | tr -s ' '

Αποκοπή χρήσης εντολών

Η εντολή cut εξάγει τμήματα γραμμών εισόδου (από stdin ή αρχεία) και εμφανίζει το αποτέλεσμα σε τυπική έξοδο, με βάση τον αριθμό των byte (επιλογή -b), τους χαρακτήρες (-c), ή πεδία (-f).

Σε αυτήν την τελευταία περίπτωση (βάσει πεδίων), το προεπιλεγμένο διαχωριστικό πεδίων είναι μια καρτέλα, αλλά μπορεί να καθοριστεί διαφορετικός οριοθέτης χρησιμοποιώντας την επιλογή -d.

Παραδείγματα εντολών αποκοπής

Εξαγάγετε τους λογαριασμούς χρηστών και τα προεπιλεγμένα κελύφη που τους έχουν εκχωρηθεί από το /etc/passwd (η επιλογή –d μας επιτρέπει να καθορίσουμε τον οριοθέτη πεδίου και το –f Ο διακόπτης υποδεικνύει ποια πεδία θα εξαχθούν.

cat /etc/passwd | cut -d: -f1,7

Συνοψίζοντας, θα δημιουργήσουμε μια ροή κειμένου που θα αποτελείται από το πρώτο και το τρίτο μη κενά αρχεία της εξόδου της εντολής τελευταία. Θα χρησιμοποιήσουμε το grep ως πρώτο φίλτρο για να ελέγξουμε για περιόδους σύνδεσης του χρήστη gacanepa και, στη συνέχεια, θα συμπιέσουμε οριοθέτες σε ένα μόνο διάστημα (tr -s ' ' ).

Στη συνέχεια, θα εξαγάγουμε το πρώτο και το τρίτο πεδία με cut και, τέλος, θα ταξινομήσουμε με βάση το δεύτερο πεδίο (διευθύνσεις IP σε αυτήν την περίπτωση) που δείχνει μοναδικές.

last | grep gacanepa | tr -s ' ' | cut -d' ' -f1,3 | sort -k2 | uniq

Η παραπάνω εντολή δείχνει πώς πολλαπλές εντολές και σωλήνες μπορούν να συνδυαστούν έτσι ώστε να λάβουμε φιλτραρισμένα δεδομένα σύμφωνα με τις επιθυμίες μας. Μη διστάσετε να το εκτελέσετε και ανά εξαρτήματα, για να σας βοηθήσει να δείτε την έξοδο που διοχετεύεται από τη μια εντολή στην άλλη (παρεμπιπτόντως, αυτή μπορεί να είναι μια εξαιρετική εμπειρία εκμάθησης!).

Περίληψη

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

Μη διστάσετε να αφήσετε τις ερωτήσεις και τα σχόλιά σας παρακάτω - θα εκτιμηθούν πολύ!

Το eBook LFCS είναι διαθέσιμο τώρα για αγορά. Παραγγείλετε το αντίγραφό σας σήμερα και ξεκινήστε το ταξίδι σας για να γίνετε πιστοποιημένος διαχειριστής συστήματος Linux!

Product Name Price Buy
The Linux Foundation’s LFCS Certification Preparation Guide $19.99 [Buy Now]

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