What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179
Πίνακας περιεχομένων:
Όταν γράφετε σενάρια κελύφους, μπορεί να βρίσκεστε σε μια κατάσταση όπου πρέπει να περάσετε ένα πολύπλευρο μπλοκ κειμένου ή κώδικα σε μια διαδραστική εντολή, όπως το
tee
,
cat
ή
sftp
.
Στο Bash και σε άλλα κοχύλια όπως το Zsh, ένα έγγραφο Here (Heredoc) είναι ένας τύπος ανακατεύθυνσης που σας επιτρέπει να περάσετε πολλές γραμμές εισόδου σε μια εντολή.
Η σύνταξη της σύνταξης του HereDoc έχει την ακόλουθη μορφή:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- Η πρώτη γραμμή ξεκινά με μια προαιρετική εντολή που ακολουθείται από τον ειδικό χειριστή ανακατεύθυνσης
<<και το αναγνωριστικό οριοθέτησης.- Μπορείτε να χρησιμοποιήσετε οποιαδήποτε συμβολοσειρά ως αναγνωριστικό οριοθέτησης, τα πιο συνηθισμένα χρησιμοποιούνται EOF ή END.Αν το αναγνωριστικό οριοθέτησης είναι unquoted, το κέλυφος θα αντικαταστήσει όλες τις μεταβλητές, τις εντολές και τους ειδικούς χαρακτήρες πριν περάσει τις γραμμές του παρόντος εγγράφου στην εντολή. με το σύμβολο μείον στον χειριστή ανακατεύθυνσης
<<-, θα αγνοήσει όλους τους χαρακτήρες της καρτέλας. Αυτό σας επιτρέπει να χρησιμοποιήσετε την εσοχή όταν γράφετε εδώ-έγγραφα σε δέσμες ενεργειών κελύφους. Δεν επιτρέπονται οι κορυφαίοι χαρακτήρες κενών διαστημάτων, μόνο στην καρτέλα.
Το μπλοκ του παρόντος εγγράφου μπορεί να περιέχει συμβολοσειρές, μεταβλητές, εντολές και κάθε άλλο τύπο εισόδου. Η τελευταία γραμμή τελειώνει με το αναγνωριστικό οριοθέτησης. Ο λευκός χώρος μπροστά από τον οριοθέτη δεν επιτρέπεται. - Μπορείτε να χρησιμοποιήσετε οποιαδήποτε συμβολοσειρά ως αναγνωριστικό οριοθέτησης, τα πιο συνηθισμένα χρησιμοποιούνται EOF ή END.Αν το αναγνωριστικό οριοθέτησης είναι unquoted, το κέλυφος θα αντικαταστήσει όλες τις μεταβλητές, τις εντολές και τους ειδικούς χαρακτήρες πριν περάσει τις γραμμές του παρόντος εγγράφου στην εντολή. με το σύμβολο μείον στον χειριστή ανακατεύθυνσης
Βασικά Παραδείγματα Heredoc
Σε αυτή την ενότητα θα δούμε μερικά βασικά παραδείγματα για τον τρόπο χρήσης του heredoc.
Το Heredoc χρησιμοποιείται συχνότερα σε συνδυασμό με την εντολή γάτας.
Στο ακόλουθο παράδειγμα, διαβιβάζουμε δύο γραμμές κειμένου που περιέχουν μια μεταβλητή περιβάλλοντος και μια εντολή στη
cat
χρησιμοποιώντας εδώ ένα έγγραφο.
cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF
Όπως μπορείτε να δείτε από την παρακάτω έξοδο, αντικαθίστανται τόσο η μεταβλητή όσο και η έξοδος εντολών:
The current working directory is: /home/linuxize You are logged in as: linuxize
Ας δούμε τι θα συμβεί αν περικλείσουμε τον απομεμακρυστή σε απλά ή διπλά εισαγωγικά.
cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF
Μπορείτε να παρατηρήσετε ότι όταν αναγράφεται ο οριοθέτης δεν γίνεται επέκταση παραμέτρων και αντικατάσταση εντολών από το κέλυφος.
The current working directory is: $PWD You are logged in as: $(whoami)
if true; then cat <<- EOF Line with a leading tab. EOF fi
Line with a leading tab.
Αντί να εμφανίσετε την έξοδο στην οθόνη, μπορείτε να την ανακατευθύνετε σε ένα αρχείο χρησιμοποιώντας τους χειριστές
>
,
>>
.
cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
Αν το file.txt δεν υπάρχει, θα δημιουργηθεί. Όταν χρησιμοποιείτε
>
το αρχείο θα αντικατασταθεί, ενώ το
>>
θα προσαρτήσει την έξοδο στο αρχείο.
Η είσοδος heredoc μπορεί επίσης να διοχετευτεί. Στο ακόλουθο παράδειγμα, η εντολή
sed
θα αντικαταστήσει όλες τις εμφανίσεις του χαρακτήρα
l
με
e
:
cat <<'EOF' | sed 's/l/e/g' Hello World EOF
Heeeo Wored
Για να γράψετε τα δεδομένα που μεταφέρονται σε ένα αρχείο:
cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF
Χρησιμοποιώντας τον Heredoc με SSH
Η χρήση του Heredoc είναι ένας από τους πιο βολικούς και ευκολότερους τρόπους εκτέλεσης πολλαπλών εντολών σε απομακρυσμένο σύστημα μέσω SSH.
Όταν χρησιμοποιείτε unquoted delimiter σιγουρευτείτε ότι ξεφύγετε από όλες τις μεταβλητές, τις εντολές και τους ειδικούς χαρακτήρες διαφορετικά θα παρεμβληθούν τοπικά:
ssh -T [email protected] << EOF echo "The current local working directory is: $PWD" echo "The current remote working directory is: \$PWD" EOF
The current local working directory is: /home/linuxize The current remote working directory is: /home/user
Μπορεί επίσης να θέλετε να ρυθμίσετε έναν έλεγχο ταυτότητας βασισμένο σε κλειδί SSH και να συνδεθείτε στους διακομιστές Linux χωρίς να εισάγετε κωδικό πρόσβασης.
συμπέρασμα
Σε αυτόν τον οδηγό, έχετε μάθει τι είναι
heredoc
και πώς να το χρησιμοποιήσετε στα
heredoc
σας.
Η Microsoft Research Asia φιλοξενεί πύλες σε 10 χρόνια Bash
Microsoft Research Η Ασία έχει αυξηθεί από δώδεκα άτομα το 1998 σε πάνω από 350 μια δεκαετία αργότερα.
Πώς να εκτελέσετε το Bash στο Ubuntu στα Windows 10
Η ενεργοποίηση του υποσυστήματος Windows για Linux θα σας επιτρέψει να εκτελέσετε το Bash στο Ubuntu στα Windows 10, , Τα εργαλεία γραμμής εντολών Linux, τα πρώτα εργαλεία του Linux
Bash συστοιχίες
Οι συστοιχίες είναι μία από τις πιο χρησιμοποιούμενες και βασικές δομές δεδομένων. Σε αυτό το άρθρο, θα καλύψουμε τις συστοιχίες Bash και θα εξηγήσουμε τον τρόπο χρήσης τους στις δέσμες ενεργειών Bash.







