Ο οδηγός για αρχάριους για το Shell Scripting 3 Περισσότερες βασικές εντολές & αλυσίδες
Έχετε μάθει πώς να δημιουργείτε δέσμες ενεργειών, να χρησιμοποιείτε επιχειρήματα και να δημιουργείτε βρόχους. Τώρα, ας ρίξουμε μια ματιά σε κάποιες πιο βασικές εντολές, το χειρισμό αρχείων κειμένου και την ανακατεύθυνση εισόδου και εξόδου σε αρχεία και άλλες εντολές.
Ορισμένες βασικές χρήσιμες εντολές
Σας έχουμε ήδη δώσει μια βασική ανάλυση των σεναρίων κελύφους και μια περίληψη που βασίζεται σε παραδείγματα των βρόχων, αλλά φροντίστε να ελέγξετε αυτά τα άρθρα εάν έχετε χάσει μέχρι στιγμής τον οδηγό δέσμης ενεργειών του κελύφους μας.
Η γραμμή εντολών είναι υπέροχη για πολλούς λόγους, και η ανακατεύθυνση είναι μία από τις πιο σημαντικές. Αν έπρεπε να σημειώσετε και να αναπαράγετε την έξοδο κάθε εντολής για να αναλάβετε περαιτέρω δράση ή να την χρησιμοποιήσετε για κάτι άλλο, τότε θα είχαμε όλα τρελά πολύ καιρό πριν. Η ανακατεύθυνση μας επιτρέπει να χρησιμοποιήσουμε αυτήν την έξοδο και να την αποθηκεύσουμε ή να τη χρησιμοποιήσουμε αμέσως ως είσοδο για άλλη εντολή. Μπορούμε επίσης να χρησιμοποιήσουμε τα αρχεία ως εισροές για άλλες εντολές.
Πριν συνεχίσουμε, ας καλύψουμε ορισμένες βασικές εντολές που μπορούν να χρησιμοποιηθούν σε πολλά διαφορετικά μέρη.
ηχώ - Αυτή η εντολή απλά εκτυπώνει (εμφανίζει) ολόκληρο το όρισμα της στην γραμμή εντολών ως έξοδο
echo argument με τα κενά
Όπως μπορείτε να δείτε, οι ειδικοί χαρακτήρες πρέπει να "διαφεύγουν" έτσι ώστε να αντιμετωπίζονται κανονικά. Αυτό γίνεται χρησιμοποιώντας μια πίσω κάθετο (\) μπροστά από τον χαρακτήρα. Είναι μια καλύτερη ιδέα να χρησιμοποιήσετε εισαγωγικά. Η εντολή echo λειτουργεί επίσης με μεταβλητές.
Όπως μπορείτε να δείτε, τα απλά και διπλά εισαγωγικά συμπεριφέρονται διαφορετικά. Για περισσότερες πληροφορίες, ελέγξτε ποια είναι η διαφορά μεταξύ ενιαίας και διπλής προσφοράς στο Bash Shell?
Γάτα - Αυτή η εντολή εμφανίζει τα περιεχόμενα των αρχείων κειμένου ως έξοδο.
cat file_to_be_read
Ας πούμε ότι δημιουργούμε αυτό το αρχείο κειμένου σε nano:
Όταν χρησιμοποιούμε την εντολή γάτας στο αρχείο, μπορούμε να δούμε ότι είναι έξοδος.
grep - Αυτή είναι μια από τις πιο ισχυρές και χρήσιμες εντολές που έχετε στη διάθεσή σας στο Linux. Πρόκειται για εκτύπωση Global / Regular Expression Print. Εξετάζει ένα αρχείο και εκτυπώνει οποιαδήποτε γραμμή αντιστοιχεί σε ένα συγκεκριμένο μοτίβο. Επειδή αυτό το μοτίβο βασίζεται σε "κανονική έκφραση", μια συνοπτική γραμμή μπορεί να αποφέρει ένα πλήθος μοτίβων που πρέπει να ταιριάζουν. Για όχι, όμως, μπορείτε να εισάγετε ένα ψάρι για αναζήτηση.
grep file pattern
Σας διαβεβαιώνω ότι το grep μπορεί να κάνει περισσότερα, αλλά για τώρα ας κολλήσουμε στα ευκολότερα πράγματα.
Αναπροσανατολισμός εξόδων
Για να ανακατευθύνουμε την έξοδο μιας εντολής σε ένα αρχείο, χρησιμοποιούμε έναν ειδικό χαρακτήρα, το σύμβολο μεγαλύτερο από το (>).
Ας αλλάξουμε τη λίστα μας, εμείς; Καταχωρίστε την ακόλουθη εντολή:
echo pepperoni> λίστα
Μπορείτε να δείτε ότι η ηχώ δεν εμφανίζει τη γραμμή πια, και όταν κοιτάμε τα περιεχόμενα του αρχείου "λίστας", βλέπουμε τι επαναλάβαμε εκεί.
Σημειώστε επίσης ότι τα προηγούμενα περιεχόμενα της "λίστας" έχουν καταργηθεί. Προσπάθησε ξανά:
Αυτό μπορεί να είναι χρήσιμο όταν θέλετε να επαναχρησιμοποιήσετε ένα αρχείο, αλλά συχνά θέλουμε μόνο να προσθέσουμε σε ένα υπάρχον αρχείο. Για αυτό, χρησιμοποιούμε δύο διαδοχικά μεγαλύτερα από σύμβολα:
echo κίτρινες πιπεριές >> λίστα
Εύκολος! Ας χρησιμοποιήσουμε αυτήν την εντολή για να δημιουργήσουμε μια μεγαλύτερη λίστα, εμείς?
Πάμε εκεί. Νομίζω ότι μπορείτε να δείτε γιατί τόσοι πολλοί geeks χρησιμοποιούν τη γραμμή εντολών για να κάνουν τους καταλόγους υποχρεώσεων και τα παρόμοια, αλλά γίνεται ακόμα καλύτερα.
Ας πάρουμε την έξοδο μιας εντολής και την βάζουμε σε ένα αρχείο:
ls -al /> ~ / rootlist
Η δημιουργία καταλόγων αρχείων, η επεξεργασία τους και η εκτέλεση εντολών σε αυτά που θέλετε δεν ήταν ποτέ απλούστερη. Και, ενώ κάνουμε αυτές τις βασικές λειτουργίες στην γραμμή εντολών, αυτές λειτουργούν καλά και σε σενάρια.
Σωληνώσεις ή αλυσίδες
Η σωληνώσεις ονομάζεται έτσι επειδή χρησιμοποιεί τον αγωγό, (|, που μοιράζεται με το πλήκτρο \ στα περισσότερα πληκτρολόγια). Ουσιαστικά, παίρνει την έξοδο μίας εντολής και την τροφοδοτεί άμεσα σε μια άλλη. Μπορείτε να δημιουργήσετε μεγάλες αλυσίδες εντολών για να πάρετε μια πολύ συγκεκριμένη επιθυμητή έξοδο με αυτό τον τρόπο, και είναι πολύ βολικό για εντολές όπως grep.
Λειτουργεί πολύ όπως το ">" εκτός από το ότι μπορεί να αλυσοδετηθεί πολλές φορές και το αποτέλεσμά του είναι γενικότερο επειδή δεν χρειάζεται να περάσει από ένα αρχείο κειμένου.
Όπως μπορείτε να δείτε, το grep έχει διάκριση πεζών-κεφαλαίων. Μπορείτε να χρησιμοποιήσετε τη σημαία "-i" για να την αγνοήσετε.
Ανακατεύθυνση εισόδων
Μπορείτε επίσης να παίρνετε εισόδους από αρχεία για εντολές χρησιμοποιώντας το σύμβολο κάτω από το (<).
Γάτα < list
"Αυτό δεν είναι διαφορετικό από το να χρησιμοποιήσεις ένα επιχείρημα!" Θα μπορούσες να πεις. Θα ήταν σωστό σε αυτή την περίπτωση. Όπου η ανακατεύθυνση της εισόδου έρχεται πραγματικά χρήσιμη είναι η σύνδεση των εντολών.
Ας υποθέσουμε ότι θέλουμε να φιλτράρουμε οποιαδήποτε λέξη έχει "pep" σε αυτό από το τρέχον αρχείο "λίστας" σε ένα νέο αρχείο που ονομάζεται "revisions".
grep pep revisions
Ας επαναλάβουμε αυτήν την εντολή και προσθέσουμε κάποια διαλογή.
grep pep revisions
Αυτό θα χρησιμοποιήσει τον όρο αναζήτησης ως τον όρο αναζήτησης από τον κατάλογο εισόδου, θα το ταξινομήσει με αλφαβητική σειρά (όλοι οι όροι ανώτερης περίπτωσης που ακολουθούνται από όλους τους όρους με μικρότερο όρο) και στη συνέχεια θα το εξάγουν στο αρχείο "revisions".
Για να απεικονίσουμε την εντολή ταξινόμησης, ας δούμε το ακόλουθο παράδειγμα:
Όπως μπορείτε να δείτε, προσθέτοντας τη σημαία "-f" στην εντολή ταξινόμησης σας επιτρέπει να αγνοήσετε την περίπτωση. Αυτό μας διευκολύνει στην αλφαβητισμό των γραμμών στα αρχεία κειμένου και αγνοούμε τη χρήση κεφαλαίων όταν δεν έχει σημασία.
Ένα απλό σενάριο
Ας δημιουργήσουμε ένα σενάριο που έχει την ακόλουθη φόρμα:
δέσμη ενεργειών
Θα πάρει τον όρο και θα χρησιμοποιήσει το grep για να ψάξει μέσα από ένα αρχείο λίστας, να ταξινομήσει τα αποτελέσματα και στη συνέχεια να τα βγάλει σε άλλο αρχείο.
Εδώ είναι ο κατάλογος που θα δοκιμάσουμε το σενάριο σε:
Και, μπορούμε να δημιουργήσουμε μια λίστα με αυτά που υπάρχουν εδώ, και στη συνέχεια να εκτελέσετε το σενάριο.
Ορίστε! Όσο περισσότερο μάθετε τους κανόνες των κανονικών εκφράσεων, τόσο πιο σωστά μπορείτε να δημιουργήσετε μια εντολή αναζήτησης. Και, οτιδήποτε είναι έγκυρο σε εισαγωγικά μπορεί να αντικατασταθεί από το πρώτο σας επιχείρημα!
Όσον αφορά τη διαλογή, μπορείτε να κάνετε κάτι περισσότερο από αλφαβητική. Ρίξτε μια ματιά στη σελίδα man για μερικές από τις ακόλουθες εντολές:
- tsort - μια πιο προηγμένη τοπολογική λειτουργία διαλογής
- tr - σας επιτρέπει να αντιστοιχίσετε συγκεκριμένους χαρακτήρες σε άλλους χαρακτήρες και να μεταγράψετε μεταξύ τους.
- uniq - αφαιρεί κάθε μη-μοναδικό (διαβάσει: διπλότυπο)
- awk - μια πολύ προηγμένη γλώσσα / λειτουργία επεξεργασίας κειμένου που μπορεί να χρησιμοποιηθεί για τον διαχωρισμό πεδίων στα ονόματα αρχείων
- cut, paste / join - χρήσιμες εντολές για την απομόνωση πεδίων από αρχεία κειμένου και την προσθήκη νέων δεδομένων σε στήλες
- look - αναζητήσεις όπως το grep, αλλά χρησιμοποιεί ένα αρχείο λεξικού (που μπορεί να καθοριστεί από το χρήστη) για την αναζήτηση
- wc - σας δίνει τη δυνατότητα να μετρήσετε τον αριθμό λέξεων, τον αριθμό γραμμών, τον αριθμό χαρακτήρων και πολλά άλλα
Εξετάσαμε κάποια ακόμα βασικά στοιχεία που μπορούν να είναι τόσο χρήσιμα στη γραμμή εντολών όσο και σε σενάρια. Τα δεδομένα με βάση τα κείμενα είναι συχνά στην καρδιά των πράξεων που χρησιμοποιούμε καθημερινά, έτσι ώστε να μπορούμε να το δουλεύουμε, να το ψάχνουμε και να το χειριζόμαστε είναι το κλειδί.
Ποια είναι τα αγαπημένα σας scripts; Έχετε κάποια σενάρια ειδικής χρήσης για αρχεία που βασίζονται σε κείμενο; Μοιραστείτε όσα γνωρίζετε στα σχόλια!