Πώς να χρησιμοποιήσετε εδώ τα έγγραφα στο Bash στο Linux

Ένα παράθυρο τερματικού σε ένα σύστημα υπολογιστή Linux.

Fatmawati Achmad Zaenuri/Shutterstock



Τα έγγραφα που ονομάζονται περίεργα εδώ σάς επιτρέπουν να χρησιμοποιείτε ανακατεύθυνση εισόδου/εξόδου μέσα σε σενάρια Bash στο Linux. Είναι ένας πολύ καλός τρόπος για να αυτοματοποιήσετε τις εντολές που χρειάζεστε για να εκτελέσετε σε έναν απομακρυσμένο υπολογιστή.

Εδώ Έγγραφα

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





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

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



Βασικές αρχές των εγγράφων εδώ

Η ιδιωματική αναπαράσταση ενός εγγράφου εδώ μοιάζει με αυτό:

echo
    ΕΝΤΟΛΗ: Αυτή μπορεί να είναι οποιαδήποτε εντολή Linux που δέχεται ανακατευθυνόμενη είσοδο. Σημείωση, το |_+_| εντολή δεν δέχεται ανακατευθυνόμενη είσοδο . Εάν χρειάζεται να γράψετε στην οθόνη, μπορείτε να χρησιμοποιήσετε το |_+_| εντολή, που κάνει . <<: Ο τελεστής ανακατεύθυνσης. limit_string: Αυτή είναι μια ετικέτα. Μπορεί να είναι ό,τι θέλετε, αρκεί να μην εμφανίζεται στη λίστα των δεδομένων που ανακατευθύνετε στην εντολή. Χρησιμοποιείται για την επισήμανση του τέλους της λίστας κειμένου, δεδομένων και μεταβλητών. Λίστα δεδομένων: Μια λίστα δεδομένων που θα τροφοδοτηθούν στην εντολή. Μπορεί να περιέχει εντολές, κείμενο και μεταβλητές. Τα περιεχόμενα της λίστας δεδομένων τροφοδοτούνται στην εντολή μία γραμμή κάθε φορά μέχρι να συναντηθεί η συμβολοσειρά _limit_.
Διαφήμιση

Πιθανότατα θα δείτε παραδείγματα εγγράφων εδώ που χρησιμοποιούν τον ΕΟΦ ως συμβολοσειρά ορίου. Δεν ευνοούμε αυτήν την προσέγγιση. Λειτουργεί, αλλά ΕΟΦ σημαίνει Τέλος αρχείου. Πέρα από τη σπάνια περίπτωση που ένα εγχώριο έγγραφο είναι το τελευταίο πράγμα σε ένα αρχείο σεναρίου, ο ΕΟΦ χρησιμοποιείται λανθασμένα.

Θα κάνει τα σενάρια σας πολύ πιο ευανάγνωστα εάν χρησιμοποιήσετε μια συμβολοσειρά ορίου που αναφέρεται σε αυτό που κάνετε. Εάν στέλνετε μια σειρά εντολών σε έναν απομακρυσμένο υπολογιστή Ασφαλές κέλυφος (SSH), μια συμβολοσειρά ορίου που ονομάζεται κάτι σαν _remote_commands θα ήταν απολύτως λογικό. Δεν χρειάζεται να τα ξεκινήσετε με υπογράμμιση |_+_| χαρακτήρας. Το κάνουμε αυτό γιατί τα χαρακτηρίζει ως κάτι ασυνήθιστο στο σενάριό σας.



Απλά Παραδείγματα

Μπορείτε να χρησιμοποιήσετε εδώ έγγραφα στη γραμμή εντολών και σε σενάρια. Όταν πληκτρολογήσετε τα ακόλουθα σε ένα παράθυρο τερματικού, θα δείτε ένα |_+_| προτροπή συνέχισης γραμμής κάθε φορά που πατάτε Enter. Όταν πληκτρολογείτε τη συμβολοσειρά ορίου _end_of_text και πατάτε Enter, η λίστα των ιστότοπων περνά στο |_+_| και εμφανίζονται στο παράθυρο τερματικού.

cat

Αυτή δεν είναι η πιο αξιόλογη από τις ασκήσεις, αλλά δείχνει ότι τίποτα δεν αποστέλλεται στην εντολή μέχρι να συγκεντρωθεί ολόκληρη η λίστα δεδομένων και να βρεθεί η συμβολοσειρά ορίου. Το |_+_| Η εντολή δεν λαμβάνει καμία είσοδο έως ότου εισαγάγετε τη συμβολοσειρά ορίου _end_of_text και πατήσετε το πλήκτρο Enter.

Μπορούμε να κάνουμε το ίδιο πράγμα σε ένα σενάριο. Πληκτρολογήστε ή αντιγράψτε αυτό το παράδειγμα σε ένα πρόγραμμα επεξεργασίας, αποθηκεύστε το αρχείο ως heredoc-1.sh και κλείστε το πρόγραμμα επεξεργασίας.

_

Καθώς ακολουθείτε αυτό το άρθρο, κάθε φορά που δημιουργείτε ένα σενάριο, θα πρέπει να το κάνετε καταστήστε το εκτελέσιμο πριν τρέξει. Σε κάθε περίπτωση, χρησιμοποιήστε το |_+_| εντολή . Αντικαταστήστε το όνομα του σεναρίου σε κάθε παράδειγμα με το όνομα του σεναρίου που χρησιμοποιείται εδώ.

>

Διαφήμιση

Αυτό το σενάριο περιέχει δύο μεταβλητές περιβάλλοντος, |_+_| και |_+_|. Τα ονόματα των μεταβλητών περιβάλλοντος αντικαθίστανται από τις τιμές δεδομένων τους—τον τρέχοντα κατάλογο εργασίας και την έκδοση του Bash—όταν εκτελείται το σενάριο.

Το σενάριο χρησιμοποιεί επίσης αντικατάσταση εντολής επί το |_+_| εντολή . Το όνομα της εντολής αντικαθίσταται από τη δική της έξοδο. Η έξοδος από ολόκληρο το σενάριο γράφεται στο παράθυρο του τερματικού με την εντολή cat. Εκτελούμε το σενάριο αποκαλώντας το με το όνομά του:

cat,

Εάν τροποποιήσετε το σενάριο και τυλίξετε τη συμβολοσειρά ορίου στην πρώτη γραμμή του εγγράφου here σε εισαγωγικά |_+_| , η λίστα δεδομένων μεταβιβάζεται στην εντολή εδώ εγγράφου αυτολεξεί. Εμφανίζονται ονόματα μεταβλητών αντί για τιμές μεταβλητών και δεν θα γίνει αντικατάσταση εντολών.

cat chmod

Χειρισμός χαρακτήρων καρτελών

Από προεπιλογή, οι χαρακτήρες καρτέλας στη λίστα δεδομένων σας θα διατηρηθούν και θα εγγραφούν στο παράθυρο του τερματικού. Αντιγράψτε και αποθηκεύστε αυτό το παράδειγμα ως heredoc-2.sh. Κάντε το εκτελέσιμο χρησιμοποιώντας το |_+_| εντολή. Επεξεργαστείτε τις γραμμές με εσοχή για να βεβαιωθείτε ότι έχουν έναν ή δύο χαρακτήρες καρτέλας στην αρχή της γραμμής αντί για μια σειρά από κενά.

$PWD $BASH_VERSION

Οι καρτέλες γράφονται στο παράθυρο του τερματικού.

Προσθέτοντας μια παύλα |_+_| στον τελεστή ανακατεύθυνσης, το έγγραφο here θα αγνοήσει τους χαρακτήρες της κύριας καρτέλας. Αποθηκεύστε αυτό το παράδειγμα ως heredoc-3.sh και κάντε το εκτελέσιμο.

whoami '

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

Διαφήμιση

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

chmod

Ανακατεύθυνση σε αρχείο

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

Αυτό το σενάριο είναι heredoc-4.sh. Θα ανακατευθύνει την έξοδο του σε ένα αρχείο κειμένου που ονομάζεται session.txt.

- - >

Σωλήνωση της εξόδου σε άλλη εντολή

Η έξοδος από την εντολή που χρησιμοποιείται σε ένα έγγραφο εδώ μπορεί να διοχετευτεί ως είσοδος σε άλλη εντολή. Χρήση ο σωλήνας |_+_| χειριστής μετά η συμβολοσειρά ορίου στην πρώτη γραμμή του εγγράφου εδώ. Θα μεταφέρουμε την έξοδο από την εντολή εδώ εγγράφου, |_+_|, στο |_+_|. Θέλουμε να αντικαταστήσει όλες τις εμφανίσεις του γράμματος α με το γράμμα ε.

Ονομάστε αυτό το σενάριο heredoc-5.sh.

>> |

Ο Gaak διορθώνεται σε Geek.

Αποστολή παραμέτρων σε μια συνάρτηση

Η εντολή που χρησιμοποιείται με ένα έγγραφο εδώ μπορεί να είναι μια συνάρτηση στο σενάριο.

Αυτό το σενάριο μεταβιβάζει ορισμένα δεδομένα οχήματος σε μια συνάρτηση. Η συνάρτηση διαβάζει τα δεδομένα σαν να τα είχε πληκτρολογήσει κάποιος χρήστης. Στη συνέχεια εκτυπώνονται οι τιμές των μεταβλητών. Αποθηκεύστε αυτό το σενάριο ως heredoc-6.sh.

cat sed

Τα στοιχεία του οχήματος είναι γραμμένα στο παράθυρο τερματικού.

Δημιουργία και αποστολή email

Μπορούμε να χρησιμοποιήσουμε ένα έγγραφο εδώ για να συντάξουμε και να στείλουμε ένα email. Σημειώστε ότι μπορούμε να περάσουμε παραμέτρους στην εντολή μπροστά από τον τελεστή ανακατεύθυνσης. είμαστε χρησιμοποιώντας το Linux |_+_| εντολή προς το στείλτε ένα email μέσω του τοπικού συστήματος αλληλογραφίας στον λογαριασμό χρήστη που ονομάζεται dave. Το |_+_| Η επιλογή (θέμα) μας επιτρέπει να καθορίσουμε το θέμα για το email.

Αυτό το παράδειγμα σχηματίζει το σενάριο heredoc-7.sh.

mail -s

Διαφήμιση

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

-T

Χρήση εδώ εγγράφων με SSH

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

Αυτό το σενάριο είναι heredoc-8.sh. Θα συνδεθούμε σε έναν απομακρυσμένο υπολογιστή που ονομάζεται remote-pc. Ο λογαριασμός χρήστη ονομάζεται dave. Χρησιμοποιούμε το |_+_| (απενεργοποίηση κατανομής ψευδοτερματικού) επειδή δεν χρειαζόμαστε να μας εκχωρηθεί ένα διαδραστικό ψευδοτερματικό.

Στην ενότητα 'Do some work in here' του σεναρίου, θα μπορούσαμε να περάσουμε μια λίστα εντολών, και αυτές θα εκτελούνταν στον απομακρυσμένο υπολογιστή. Φυσικά, θα μπορούσατε απλώς να καλέσετε ένα σενάριο που υπήρχε στον απομακρυσμένο υπολογιστή. Το απομακρυσμένο σενάριο θα μπορούσε να περιέχει όλες τις εντολές και τις ρουτίνες που θέλετε να εκτελέσετε.

Το μόνο που πρόκειται να κάνει το σενάριό μας —heredoc-8.sh— είναι να ενημερώσει ένα αρχείο καταγραφής σύνδεσης στον απομακρυσμένο υπολογιστή. Ο λογαριασμός χρήστη και μια σφραγίδα ώρας και ημερομηνίας καταγράφονται σε ένα αρχείο κειμένου.

catΔιαφήμιση

Όταν εκτελούμε την εντολή, μας ζητείται ο κωδικός πρόσβασης για τον λογαριασμό στο μακρινός υπολογιστή.

rsync

Εμφανίζονται ορισμένες πληροφορίες σχετικά με τον απομακρυσμένο υπολογιστή και επιστρέφουμε στη γραμμή εντολών.

Στο μακρινός υπολογιστή, μπορούμε να χρησιμοποιήσουμε |_+_| για να ελέγξετε το αρχείο καταγραφής σύνδεσης:

COMMAND << limit_string . . text data variables . . limit_string

Κάθε σύνδεση παρατίθεται για εμάς.

ΣΧΕΤΙΖΕΤΑΙ ΜΕ: Πώς να δημιουργήσετε και να εγκαταστήσετε κλειδιά SSH από το κέλυφος του Linux

Παράξενο όνομα, προσεγμένα χαρακτηριστικά

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

ΣΧΕΤΙΖΕΤΑΙ ΜΕ: Πώς να δημιουργήσετε αντίγραφα ασφαλείας του συστήματος Linux με το rsync

ΔΙΑΒΑΣΤΕ ΤΗ ΣΥΝΕΧΕΙΑ Φωτογραφία προφίλ για τον Dave McKay Dave McKay
Ο Dave McKay χρησιμοποίησε για πρώτη φορά υπολογιστές όταν η διάτρητη χαρτοταινία ήταν στη μόδα και από τότε ασχολείται με τον προγραμματισμό. Μετά από περισσότερα από 30 χρόνια στη βιομηχανία της πληροφορικής, είναι πλέον δημοσιογράφος τεχνολογίας πλήρους απασχόλησης. Κατά τη διάρκεια της καριέρας του, έχει εργαστεί ως ελεύθερος επαγγελματίας προγραμματιστής, διευθυντής διεθνούς ομάδας ανάπτυξης λογισμικού, διευθυντής έργου υπηρεσιών πληροφορικής και, πιο πρόσφατα, ως Υπεύθυνος Προστασίας Δεδομένων. Η γραφή του έχει δημοσιευτεί από τα howtogeek.com, cloudsavvyit.com, itenterpriser.com και opensource.com. Ο Dave είναι ευαγγελιστής Linux και υπέρμαχος ανοιχτού κώδικα.
Διαβάστε το πλήρες βιογραφικό

Ενδιαφέροντα Άρθρα