Πώς να χρησιμοποιήσετε την εντολή Echo στο Linux
Βασικά Takeaways
-
Το
Echo
είναι μια ζω
τι
κής σημασίας εντολή που μας επιτρέπει να λαμβάνουμε ορατά
αποτελέσματα
από σενάρια φλοιού και μπορεί να περιλαμβάνει μεταβλητές, ονόματα αρχείων και καταλόγους. - Υπάρχουν δύο εκδόσεις του echo: μία ενσωματωμένη στο κέλυφος Bash και μια δυαδική εκτελέσιμη έκδοση.
- Το Echo μπορεί να χρησιμοποιηθεί για την εγγραφή κειμένου στο παράθυρο του τερματικού, τη χρήση μεταβλητών για δυναμική έξοδο, την ενσωμάτωση εξόδου εντολών, τη μορφοποίηση κειμένου με χαρακτήρες με ανάστροφη κάθετο, τη λίστα αρχείων και καταλόγων και την εγγραφή σε αρχεία.
ο
echo
Η εντολή είναι ιδανική για τη σύνταξη μορφοποιημένου κειμένου στο παράθυρο του τερματικού. Και δεν χρειάζεται να είναι στατικό κείμενο. Μπορεί να περιλαμβάνει μεταβλητές φλοιού, ονόματα αρχείων και καταλόγους. Μπορείτε επίσης να ανακατευθύνετε την ηχώ για να δημιουργήσετε αρχεία κειμένου και αρχεία καταγραφής. Ακολουθήστε αυτόν τον απλό οδηγό για να μάθετε πώς.
Τι κάνει η Echo;
Η ηχώ
επα
ναλαμβάνει τι
έχει πει να επαναληφθεί
. Αυτή είναι μια απλή λειτουργία, αλλά ζωτικής σημασίας. Χωρίς
echo
δεν θα μπορούσαμε να λάβουμε ορατά αποτελέσματα από σενάρια φλοιού, για παράδειγμα.
Αν και δεν είναι φορτωμένο με πολλά κουδούνια και σφυρίχτρες, υπάρχει μια καλή πιθανότητα ότι
echo
έχει κάποιες δυνατότητες που δεν γνωρίζατε ή που είχατε ξεχάσει.
Υπάρχουν δύο εκδόσεις της ηχούς
Τα περισσότερα συστήματα Linux παρέχουν δύο εκδόσεις του
echo
. ο
Κέλυφος Bash
έχει το δικό του
echo
ενσωματωμένο σε αυτό και υπάρχει μια δυαδική εκτελέσιμη έκδοση του
echo
επισης.
Μπορούμε να δούμε τις δύο διαφορετικές εκδόσεις χρησιμοποιώντας τις ακόλουθες εντολές:
type echo
whereis echo
ο
type
μας λέει η εντολή
είτε η εντολή που του περνάμε
ως του
διαφωνία
είναι ένα ενσωματωμένο κέλυφος, ένα δυαδικό εκτελέσιμο, ένα ψευδώνυμο ή μια συνάρτηση. Μας αναφέρει ότι
echo
είναι ενσωματωμένο κέλυφος.
Μόλις βρει απάντηση,
type
σταματά να ψάχνει για περαιτέρω αγώνες. Επομένως, δεν μας λέει αν υπάρχουν άλλες εντολές με το ίδιο όνομα στο σύστημα. Μας λέει όμως ποιο θα βρει πρώτο. Και αυτό είναι αυτό που θα χρησιμοποιηθεί από προεπιλογή όταν εκδώσουμε αυτήν την εντολή.
ο
whereis
Η εντολή αναζητά το δυαδικό εκτελέσιμο αρχείο, τον πηγαίο κώδικα και τη σελίδα man για την εντολή που της μεταβιβάζουμε ως γραμμή εντολών
παράμετρος
. Δεν αναζητά ενσωματωμένα κέλυφος επειδή δεν έχουν ξεχωριστό δυαδικό εκτελέσιμο αρχείο. Αποτελούν αναπόσπαστο μέρος του εκτελέσιμου αρχείου Bash.
ο
whereis
η εντολή αναφέρει ότι
echo
είναι ένα δυαδικό εκτελέσιμο που βρίσκεται στο
/bin
Ευρετήριο.
Για να χρησιμοποιήσετε αυτήν την έκδοση του
echo
θα χρειαστεί να το καλέσετε ρητά παρέχοντας τη διαδρομή προς το εκτελέσιμο στη γραμμή εντολών:
/bin/echo --version
Το ενσωματωμένο κέλυφος δεν ξέρει τι
--version
Το όρισμα γραμμής εντολών είναι, απλώς το επαναλαμβάνει στο παράθυρο του τερματικού:
echo --version
Τα παραδείγματα που εμφανίζονται εδώ χρησιμοποιούν όλα την προεπιλεγμένη έκδοση του
echo
στο κέλυφος Bash.
Γράψιμο κειμένου στο τερματικό με ηχώ
Για να γράψετε μια απλή συμβολοσειρά κειμένου στο παράθυρο τερματικού, πληκτρολογήστε
echo
και τη συμβολοσειρά που θέλετε να εμφανίζεται:
echo My name is Dave.
Το κείμενο επαναλαμβάνεται για εμάς. Αλλά καθώς πειραματίζεστε, σύντομα θα ανακαλύψετε ότι τα πράγματα μπορεί να γίνουν λίγο πιο περίπλοκα. Δείτε αυτό το παράδειγμα:
echo My name is Dave and I'm a geek.
Το παράθυρο τερματικού εμφανίζει α
>
υπογράφει και κάθεται εκεί περιμένοντας. Ctrl+C θα σας επιστρέψει στη γραμμή εντολών. Τι έγινε εκεί?
Το μεμονωμένο απόφθεγμα ή απόστροφο στη λέξη “Είμαι” μπερδεμένο
echo
. Ερμήνευσε αυτό το μεμονωμένο απόσπασμα ως την αρχή μιας παρατιθέμενης ενότητας κειμένου. Επειδή δεν εντόπισε ούτε ένα απόσπασμα κλεισίματος,
echo
περίμενε περισσότερες πληροφορίες. Αναμενόταν ότι η περαιτέρω εισαγωγή θα περιελάμβανε το μεμονωμένο απόσπασμα που έλειπε.
Για να συμπεριλάβετε ένα μόνο εισαγωγικό σε μια συμβολοσειρά, η απλούστερη λύση είναι να τυλίξετε ολόκληρη τη συμβολοσειρά μέσα σε διπλά εισαγωγικά:
echo "My name is Dave and I'm a geek."
Το να τυλίξετε το κείμενό σας σε διπλά εισαγωγικά είναι μια καλή γενική συμβουλή. Στα σενάρια, οριοθετεί καθαρά τις παραμέτρους στις οποίες μεταβιβάζετε
echo
. Αυτό κάνει την ανάγνωση — και τον εντοπισμό σφαλμάτων — σεναρίων πολύ πιο εύκολη.
Τι γίνεται αν θέλετε να συμπεριλάβετε έναν χαρακτήρα διπλού εισαγωγικού στη συμβολοσειρά του κειμένου σας; Αυτό είναι εύκολο, απλά βάλτε μια ανάστροφη κάθετο
μπροστά από το διπλό εισαγωγικό (χωρίς κενό μεταξύ τους).
echo "My name is Dave and I'm a "geek.""
Αυτό τυλίγει τη λέξη “geek” σε διπλά εισαγωγικά για εμάς. Σύντομα θα δούμε περισσότερους από αυτούς τους χαρακτήρες με ανάστροφη κάθετο.
Χρήση μεταβλητών με ηχώ
Μέχρι στιγμής, γράφαμε προκαθορισμένο κείμενο στο παράθυρο του τερματικού. Μπορούμε να χρησιμοποιήσουμε μεταβλητές με
echo
να παράγει έξοδο που είναι πιο δυναμικό και έχει τιμές που εισάγονται σε αυτό για εμάς από το κέλυφος. Μπορούμε να ορίσουμε μια απλή μεταβλητή με αυτήν την εντολή:
my_name="Dave"
Μια μεταβλητή που ονομάζεται
my_name
έχει δημιουργηθεί. Του έχει εκχωρηθεί η τιμή του κειμένου “Dave.” Μπορούμε να χρησιμοποιήσουμε το όνομα της μεταβλητής στις συμβολοσειρές στις οποίες μεταβιβάζουμε
echo
, και η τιμή της μεταβλητής θα γραφτεί στο παράθυρο τερματικού. Πρέπει να βάλετε ένα σημάδι δολαρίου
$
μπροστά από το όνομα της μεταβλητής to let
echo
ξέρετε ότι είναι μεταβλητή.
Υπάρχει μια επιφύλαξη. Εάν έχετε τυλίξει τη συμβολοσειρά σας σε μονά εισαγωγικά
echo
θα αντιμετωπίσει τα πάντα κυριολεκτικά. Για να εμφανίζεται η τιμή της μεταβλητής και όχι το όνομα της μεταβλητής, χρησιμοποιήστε διπλά εισαγωγικά.
echo 'My name is $my_name'
echo "My name is $my_name"
Κάπως εύστοχα, αξίζει να το επαναλάβουμε:
- Η χρήση μεμονωμένων εισαγωγικών έχει ως αποτέλεσμα το κείμενο να γράφεται στο παράθυρο τερματικού με κυριολεκτικό τρόπο.
- Η χρήση διπλών εισαγωγικών έχει ως αποτέλεσμα την ερμηνεία της μεταβλητής – που ονομάζεται επίσης επέκταση μεταβλητής – και η τιμή γράφεται στο παράθυρο τερματικού.
Χρήση εντολών με ηχώ
Μπορούμε να χρησιμοποιήσουμε μια εντολή με
echo
και ενσωματώστε την έξοδο του στη συμβολοσειρά που είναι γραμμένη στο παράθυρο τερματικού. Πρέπει να χρησιμοποιήσουμε το σύμβολο του δολαρίου
$
σαν να ήταν η εντολή μια μεταβλητή και τυλίξτε ολόκληρη την εντολή σε παρένθεση.
Θα χρησιμοποιήσουμε το
εντολή ημερομηνίας
. Μια συμβουλή είναι να χρησιμοποιήσετε την εντολή μόνη της πριν ξεκινήσετε να τη χρησιμοποιείτε
echo
. Με αυτόν τον τρόπο, εάν κάτι δεν πάει καλά με τη σύνταξη της εντολής σας, το προσδιορίζετε και το διορθώνετε πριν το συμπεριλάβετε στο
echo
εντολή. Στη συνέχεια, εάν το
echo
Η εντολή δεν κάνει αυτό που περιμένετε, θα ξέρετε ότι το πρόβλημα πρέπει να είναι με το
echo
σύνταξη επειδή έχετε ήδη αποδείξει τη σύνταξη της εντολής.
Επομένως, δοκιμάστε αυτό στο παράθυρο τερματικού:
date +%D
Και, ικανοποιημένοι που λαμβάνουμε αυτό που περιμένουμε από την εντολή ημερομηνίας, θα την ενσωματώσουμε σε
echo
εντολή:
echo "Today's date is: $(date +%D)"
Σημειώστε ότι η εντολή βρίσκεται μέσα στις παρενθέσεις και το σύμβολο του δολαρίου
$
βρίσκεται αμέσως πριν από την πρώτη παρένθεση.
Μορφοποίηση κειμένου με ηχώ
ο
-e
(enable backslash escapes) η επιλογή μας επιτρέπει να χρησιμοποιήσουμε ορισμένους χαρακτήρες με ανάστροφη κάθετο για να αλλάξουμε τη διάταξη του κειμένου. Αυτοί είναι οι χαρακτήρες με ανάστροφη κάθετο που μπορούμε να χρησιμοποιήσουμε:
-
ένα
: Ειδοποίηση (ιστορικά γνωστή ως BEL). Αυτό δημιουργεί τον προεπιλεγμένο ήχο ειδοποίησης. -
σι
: Γράφει έναν χαρακτήρα backspace. -
ντο
: Εγκαταλείπει οποιαδήποτε περαιτέρω έξοδο. -
μι
: Γράφει έναν χαρακτήρα διαφυγής. -
φά
: Γράφει έναν χαρακτήρα τροφοδοσίας φόρμας. -
n
: Γράφει μια νέα γραμμή. -
r
: Γράφει μια επιστροφή άμαξα. -
t
: Γράφει μια οριζόντια καρτέλα. -
v
: Γράφει μια κάθετη καρτέλα. -
\
: Γράφει έναν ανάστροφο χαρακτήρα.
Ας χρησιμοποιήσουμε μερικά από αυτά και ας δούμε τι κάνουν.
echo -e "This is a long line of textnsplit across three linesnwithttabstontthetthirdtline"
Το κείμενο χωρίζεται σε μια νέα γραμμή όπου χρησιμοποιήσαμε το
n
χαρακτήρες και εισάγεται μια καρτέλα όπου χρησιμοποιήσαμε το
t
χαρακτήρες.
echo -e "Herevarevverticalvtabs"
Σαν το
n
νέους χαρακτήρες γραμμής, μια κάθετη καρτέλα
v
μετακινεί το κείμενο στην παρακάτω γραμμή. Όμως, σε αντίθεση με το
n
χαρακτήρες νέας γραμμής, οι
v
Η κάθετη καρτέλα δεν ξεκινά τη νέα γραμμή στη στήλη μηδέν. Χρησιμοποιεί την τρέχουσα στήλη.
ο
b
Οι χαρακτήρες backspace μετακινούν τον κέρσορα έναν χαρακτήρα πίσω. Εάν υπάρχει περισσότερο κείμενο για εγγραφή στο τερματικό, αυτό το κείμενο θα αντικαταστήσει τον προηγούμενο χαρακτήρα.
echo -e "123b4"
Το “3” υπεργράφεται από το “4”.
ο
r
αιτίες χαρακτήρα επιστροφής μεταφοράς
echo
για να επιστρέψετε στην αρχή της τρέχουσας γραμμής και να γράψετε οποιοδήποτε περαιτέρω κείμενο από τη στήλη μηδέν.
echo -e "123r456"
Οι χαρακτήρες “123” αντικαθίστανται από τους χαρακτήρες “456”.
ο
a
Ο χαρακτήρας ειδοποίησης θα παράγει ένα ηχητικό “bleep”. Χρησιμοποιεί τον προεπιλεγμένο ήχο ειδοποίησης για το τρέχον θέμα σας.
echo -e "Make a bleepa"
ο
-n
Η επιλογή (χωρίς νέα γραμμή) δεν είναι μια ακολουθία με ανάστροφη κάθετο, αλλά επηρεάζει τα καλλυντικά της διάταξης κειμένου, επομένως θα το συζητήσουμε εδώ. Αποτρέπει
echo
από την προσθήκη νέας γραμμής στο τέλος του κειμένου. Η γραμμή εντολών εμφανίζεται αμέσως μετά το κείμενο που είναι γραμμένο στο παράθυρο του τερματικού.
echo -n "no final newline"
Χρήση echo With Files and Directories
Μπορείς να χρησιμοποιήσεις
echo
ως ένα είδος φτωχής εκδοχής του
ls
. Οι επιλογές σας είναι ελάχιστες όταν χρησιμοποιείτε
echo
σαν αυτό. Εάν χρειάζεστε κάποιου είδους πιστότητα ή καλό έλεγχο, καλύτερα να το χρησιμοποιήσετε
ls
και
η λεγεώνα των επιλογών της
.
Αυτή η εντολή παραθέτει όλα τα αρχεία και τους καταλόγους στον τρέχοντα κατάλογο:
echo *
Αυτή η εντολή παραθέτει όλα τα αρχεία και τους καταλόγους στον τρέχοντα κατάλογο των οποίων το όνομα αρχίζει με “D”:
echo D*
Αυτή η εντολή παραθέτει όλα τα αρχεία “.desktop” στον τρέχοντα κατάλογο:
echo *.desktop
Ναι. Αυτό δεν παίζει να
echo
τα δυνατά σημεία του. Χρήση
ls
.
Εγγραφή σε Αρχεία με ηχώ
Μπορούμε να ανακατευθύνουμε την έξοδο από
echo
και είτε δημιουργήστε αρχεία κειμένου είτε γράψτε σε υπάρχοντα αρχεία κειμένου.
Αν χρησιμοποιήσουμε το
>
τελεστή ανακατεύθυνσης, το αρχείο δημιουργείται εάν δεν υπάρχει. Εάν το αρχείο υπάρχει, η έξοδος από
echo
προστίθεται στην αρχή του αρχείου, αντικαθιστώντας οποιοδήποτε προηγούμενο
περιεχόμενο
.
Αν χρησιμοποιήσουμε το
>>
τελεστή ανακατεύθυνσης, το αρχείο δημιουργείται εάν δεν υπάρχει. Η έξοδος από
echo
προστίθεται στο τέλος του αρχείου και δεν αντικαθιστά κανένα υπάρχον περιεχόμενο του αρχείου.
echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
Ένα νέο αρχείο δημιουργείται με την πρώτη εντολή και εισάγεται κείμενο σε αυτό. Η δεύτερη εντολή προσθέτει μια γραμμή κειμένου στο κάτω μέρος του αρχείου. ο
cat
Η εντολή εμφανίζει τα περιεχόμενα του αρχείου στο παράθυρο του τερματικού.
Και φυσικά, μπορούμε να συμπεριλάβουμε μεταβλητές για να προσθέσουμε κάποιες χρήσιμες πληροφορίες στο αρχείο μας. Εάν το αρχείο είναι αρχείο καταγραφής, ίσως θέλουμε να προστεθεί μια χρονική σήμανση σε αυτό. Μπορούμε να το κάνουμε αυτό με την επόμενη εντολή.
Σημειώστε τα μονά εισαγωγικά γύρω από τις παραμέτρους για το
date
εντολή. Αποτρέπουν την ερμηνεία του διαστήματος μεταξύ των παραμέτρων ως το τέλος της λίστας παραμέτρων. Διασφαλίζουν ότι οι παράμετροι μεταβιβάζονται σε
date
σωστά.
echo "Logfile started: $(date +'%D %T')" > logfile.txt
cat logfile.txt
Το logfile μας δημιουργείται για εμάς και
cat
μας δείχνει ότι η ημερομηνία και η χρονική σήμανση προστέθηκαν σε αυτό.
Αυτό είναι το ρεπερτόριο του echo
Μια απλή εντολή, αλλά απαραίτητη. Αν δεν υπήρχε, θα έπρεπε να το εφεύρουμε.
VIA:
HowToGeek.com
