27Jun
Έχετε μάθει πώς να δημιουργείτε σενάρια, να χρησιμοποιείτε επιχειρήματα και να δημιουργείτε βρόχους.Τώρα, ας ρίξουμε μια ματιά σε μερικές πιο βασικές εντολές, το χειρισμό αρχείων κειμένου, και την ανακατεύθυνση εισόδου και εξόδου σε αρχεία και άλλες εντολές.
Ορισμένες βασικές χρήσιμες εντολές
Σας έχουμε ήδη δώσει μια βασική ανάλυση των σεναρίων κελύφους και μια περίληψη που βασίζεται σε παραδείγματα των for loops, αλλά φροντίστε να ελέγξετε αυτά τα άρθρα εάν έχετε χάσει μέχρι στιγμής τον οδηγό scripting shell.
Η γραμμή εντολών είναι υπέροχη για πολλούς λόγους και η ανακατεύθυνση είναι μία από τις πιο σημαντικές.Αν έπρεπε να σημειώσετε και να αναπαράγετε την έξοδο κάθε εντολής για να αναλάβετε περαιτέρω δράση ή να την χρησιμοποιήσετε για κάτι άλλο, τότε θα είχαμε παντρευτεί πολύ καιρό πριν.Η ανακατεύθυνση μας επιτρέπει να χρησιμοποιήσουμε αυτήν την έξοδο και να την αποθηκεύσουμε ή να την χρησιμοποιήσουμε αμέσως ως είσοδο για άλλη εντολή.Μπορούμε επίσης να χρησιμοποιήσουμε αρχεία ως εισροές για άλλες εντολές.
Πριν συνεχίσουμε, ας καλύψουμε κάποιες βασικές εντολές που μπορούν να χρησιμοποιηθούν σε πολλά διαφορετικά μέρη.
echo - Αυτή η εντολή απλά εκτυπώνει( εμφανίζει) το σύνολο της επιχειρηματολογίας της στην γραμμή εντολών ως έξοδο
echo argument με διαστήματα
Όπως μπορείτε να δείτε, οι ειδικοί χαρακτήρες πρέπει να "διαφεύγουν" έτσι ώστε να αντιμετωπίζονται κανονικά.Αυτό γίνεται χρησιμοποιώντας μια πίσω κάθετο( \) μπροστά από τον χαρακτήρα.Είναι μια καλύτερη ιδέα να χρησιμοποιήσετε εισαγωγικά.Η εντολή echo λειτουργεί επίσης με μεταβλητές.
Όπως βλέπετε, τα μοναδικά και τα διπλά εισαγωγικά συμπεριφέρονται διαφορετικά.Για περισσότερες πληροφορίες, ελέγξτε ποια είναι η διαφορά μεταξύ ενιαίας και διπλής προσφοράς στο Bash Shell;
cat - Αυτή η εντολή εμφανίζει τα περιεχόμενα των αρχείων κειμένου ως έξοδο.
cat file_to_be_read
Ας υποθέσουμε ότι δημιουργούμε αυτό το αρχείο κειμένου σε nano:
Όταν χρησιμοποιούμε την εντολή cat στο αρχείο, μπορούμε να δούμε την έξοδο του.
grep - Αυτή είναι μια από τις πιο ισχυρές και χρήσιμες εντολές που έχετε στη διάθεσή σας στο Linux.Πρόκειται για εκτύπωση Global / Regular Expression Print.Εξετάζει ένα αρχείο και εκτυπώνει οποιαδήποτε γραμμή αντιστοιχεί σε ένα συγκεκριμένο μοτίβο.Επειδή αυτό το μοτίβο βασίζεται σε "κανονική έκφραση", μια συνοπτική γραμμή μπορεί να αποδώσει ένα πλήθος μοτίβων που πρέπει να ταιριάζουν.Για όχι, όμως, μπορείτε να εισάγετε ένα ψάρι για αναζήτηση.
αρχείο μοτίβο grep
Σας διαβεβαιώνω ότι grep μπορεί να κάνει περισσότερα, αλλά για τώρα ας κολλήσουμε στα ευκολότερα πράγματα.
Redirecting Outputs
Για να ανακατευθύνει την έξοδο μιας εντολής σε ένα αρχείο, χρησιμοποιούμε έναν ειδικό χαρακτήρα, το σύμβολο μεγαλύτερο από το( >).
Ας αλλάξουμε τη λίστα μας, εμείς;Καταχωρίστε την ακόλουθη εντολή:
echo pepperoni & gt;λίστα
Μπορείτε να δείτε ότι η ηχώ δεν εμφανίζει τη γραμμή πια, και όταν εξετάζουμε τα περιεχόμενα του αρχείου "λίστας", βλέπουμε τι επαναλάβαμε εκεί.
Σημειώστε επίσης ότι τα προηγούμενα περιεχόμενα του "καταλόγου" καταργήθηκαν.Δοκιμάστε ξανά:
Αυτό μπορεί να είναι χρήσιμο όταν θέλετε να επαναχρησιμοποιήσετε ένα αρχείο, αλλά συχνά θέλουμε μόνο να προσθέσουμε σε ένα υπάρχον αρχείο.Για αυτό, χρησιμοποιούμε δύο διαδοχικά μεγαλύτερα από τα σύμβολα:
echo κίτρινες πιπεριές & gt;λίστα
Εύκολη!Ας χρησιμοποιήσουμε αυτήν την εντολή για να δημιουργήσουμε μια μεγαλύτερη λίστα, εμείς;
Εκεί πηγαίνουμε.Νομίζω ότι μπορείτε να δείτε γιατί τόσοι πολλοί geeks χρησιμοποιούν τη γραμμή εντολών για να κάνουν λίστες υποχρεώσεων και τα παρόμοια, αλλά γίνεται ακόμα καλύτερα.
Ας πάρουμε την έξοδο μιας εντολής και την βάλουμε σε ένα αρχείο:
ls -al / & gt;~ / rootlist
Η δημιουργία λιστών αρχείων, η επεξεργασία τους και η εκτέλεση εντολών σε αυτά που θέλετε δεν ήταν ποτέ απλούστερη.Και, ενώ κάνουμε αυτές τις βασικές λειτουργίες στην γραμμή εντολών, αυτές λειτουργούν καλά και σε σενάρια.
Piping ή αλυσίδας
Piping ονομάζεται έτσι επειδή χρησιμοποιεί τον αγωγό,( |, που μοιράζεται με το πλήκτρο \ στα περισσότερα πληκτρολόγια).Ουσιαστικά, παίρνει την έξοδο μίας εντολής και την τροφοδοτεί άμεσα σε μια άλλη.Μπορείτε να δημιουργήσετε μεγάλες αλυσίδες εντολών για να πάρετε μια πολύ συγκεκριμένη επιθυμητή έξοδο με αυτόν τον τρόπο, και είναι πολύ βολικό για εντολές όπως grep.
Λειτουργεί πολύ όπως "& gt;" εκτός από το ότι μπορεί να αλυσοδεθεί πολλές φορές και το αποτέλεσμά του είναι πιο γενικό, επειδή δεν χρειάζεται να περάσει από ένα αρχείο κειμένου.
Όπως μπορείτε να δείτε, το grep έχει διάκριση πεζών-κεφαλαίων.Μπορείτε να χρησιμοποιήσετε τη σημαία "-i" για να την αγνοήσετε.
Ανακατευθύνσεις εισόδων
Μπορείτε επίσης να πάρετε εισόδους από αρχεία για εντολές χρησιμοποιώντας το σύμβολο κάτω από το( & lt;).
cat
"Αυτό δεν είναι διαφορετικό από τη χρήση ενός επιχειρήματος!" Θα μπορούσατε να πείτε.Θα ήταν σωστό σε αυτή την περίπτωση.Όπου η ανακατεύθυνση της εισόδου έρχεται πραγματικά χρήσιμη είναι η σύνδεση των εντολών.
Ας υποθέσουμε ότι θέλουμε να φιλτράρουμε οποιαδήποτε λέξη έχει "pep" σε αυτό από το τρέχον αρχείο "λίστας" σε ένα νέο αρχείο που ονομάζεται "revisions".
grep pep & lt;λίστα & gt;αναθεωρήσεις
Ας επαναλάβουμε αυτήν την εντολή και προσθέσουμε κάποια διαλογή.
grep pep
Αυτό θα χρησιμοποιήσει ως αναφορά τον όρο αναζήτησης από τον κατάλογο εισόδου, θα το ταξινομήσει με αλφαβητική σειρά( όλοι οι ανώτεροι όροι θα ακολουθηθούν από όλους τους όρους με μικρότερο όρο) και στη συνέχεια θα το εκδώσουν στο αρχείο "revisions".
Για να επεξηγήσουμε την εντολή ταξινόμησης, ας δούμε το ακόλουθο παράδειγμα:
Όπως βλέπετε, η προσθήκη της σημαίας "-f" στην εντολή ταξινόμησης σας επιτρέπει να αγνοήσετε την περίπτωση.Αυτό μας διευκολύνει να αλφαβητούμε γραμμές σε αρχεία κειμένου και αγνοούμε κεφαλαιοποίηση όταν δεν έχει σημασία.
Ένα απλό σενάριο
Ας δημιουργήσουμε μια δέσμη ενεργειών που έχει την ακόλουθη μορφή:
script searchterm listfile
Θα πάρει τον όρο και θα χρησιμοποιήσει grep για να ψάξει μέσα από ένα αρχείο λίστας, να ταξινομήσει τα αποτελέσματα και μετά να τα βγάλει σε άλλο αρχείο.
Εδώ είναι ο κατάλογος που θα δοκιμάσουμε το σενάριο στο:
Και, μπορούμε να δημιουργήσουμε μια λίστα με ό, τι εδώ, στη συνέχεια εκτελέστε το σενάριο.
Εκεί πηγαίνετε!Όσο περισσότερο μάθετε τους κανόνες των κανονικών εκφράσεων, τόσο πιο σωστά μπορείτε να δημιουργήσετε μια εντολή αναζήτησης.Και, οτιδήποτε είναι έγκυρο σε εισαγωγικά μπορεί να αντικατασταθεί από το πρώτο σας επιχείρημα!
Όσον αφορά τη διαλογή, μπορείτε να κάνετε κάτι περισσότερο από αλφαβητικά.Ρίξτε μια ματιά στη σελίδα man για μερικές από τις παρακάτω εντολές:
- tsort - μια πιο προηγμένη λειτουργία τοπολογικής ταξινόμησης
- tr - σας επιτρέπει να χαρτογραφήσετε συγκεκριμένους χαρακτήρες σε άλλους χαρακτήρες και να μεταγράψετε μεταξύ τους.
- uniq - αφαιρεί κάθε μη μοναδική( ανάγνωση: διπλότυπο)
- awk - μια πολύ προηγμένη γλώσσα / λειτουργία επεξεργασίας κειμένου που μπορεί να χρησιμοποιηθεί για τον διαχωρισμό πεδίων στα ονόματα αρχείων
- αποκοπή, επικόλληση / σύνδεση - χρήσιμες εντολές για απομόνωση πεδίων από αρχεία κειμένου και προσθήκηνέα δεδομένα σε στήλες
- εμφάνιση - αναζητήσεις όπως grep κάνει, αλλά χρησιμοποιεί ένα αρχείο λεξικού( που μπορεί να καθορίζεται από το χρήστη) για την αναζήτηση
- wc - σας επιτρέπει να μετρήσετε λέξεις, αριθμούς γραμμών, αριθμούς χαρακτήρων και άλλα
σε μερικά ακόμα βασικά σήμερα που μπορεί να είναι εξίσου χρήσιμα στην γραμμή εντολών όπως στα σενάρια.Τα δεδομένα που βασίζονται σε κείμενο είναι συχνά στην καρδιά των πράξεων που χρησιμοποιούμε καθημερινά, οπότε μπορούμε να το δουλέψουμε, να το αναζητήσουμε και να το χειριστούμε είναι το κλειδί.
Ποια είναι τα αγαπημένα σας scripts;Έχετε κάποια σενάρια ειδικής χρήσης για αρχεία που βασίζονται σε κείμενο;Μοιραστείτε τι γνωρίζετε στα σχόλια!