Εισαγωγή
Η echo
εντολή εξάγει μια δεδομένη συμβολοσειρά στο τυπικός σωλήνας εξόδου, συνήθως δείχνει προς το τερματικό. Αν και ο τυπικός σωλήνας εξόδου μπορεί να οδηγεί σε άλλες διεπαφές – το echo
Η εντολή χρησιμοποιείται συνήθως για την εκτύπωση και την εμφάνιση μηνυμάτων στο τερματικό. Από προεπιλογή, το κείμενο του εμφανιζόμενου μηνύματος κληρονομεί το χρώμα του άλλου κειμένου στο τερματικό (το οποίο είναι προσαρμόσιμο από μόνο του). Ωστόσο – υπάρχουν διάφοροι τρόποι με τους οποίους μπορείτε να αλλάξετε το χρώμα εξόδου echo
– τόσο για μεμονωμένες συμβολοσειρές όσο και για ολόκληρα μηνύματα.
Σε αυτόν τον σύντομο οδηγό, θα ρίξουμε μια ματιά στο πώς μπορείτε να αλλάξετε το χρώμα εξόδου του
echo
σε συστήματα που βασίζονται σε Linux, χρησιμοποιώντας κωδικούς διαφυγής ANSI,tput
και πώς μπορείτε να κάνετε αυτή τη διαδικασία λιγότερο περιεκτική στα σενάρια Bash.
Αλλάξτε το χρώμα εξόδου με τους κωδικούς διαφυγής ANSI
Ο ευκολότερος τρόπος αλλαγής του χρώματος είναι μέσω ακολουθιών/κωδίκων διαφυγής ANSI. Όλοι οι κωδικοί διαφυγής ANSI ξεκινούν με το Escape
χαρακτήρας, ο οποίος μπορεί να αναπαρασταθεί σε διάφορες μορφές – 27
σε δεκαδικό, x1B
σε δεκαεξαδικό, ως κλειδί ελέγχου ^[
, ή 33
σε οκταδική μορφή. Στη συνέχεια, οι ακολουθίες ακολουθούνται από την εντολή:
33[command
Όπου ο βραχίονας ανοίγματος (Εισαγωγέας Ακολουθίας Ελέγχου) είναι προαιρετικό, αλλά βοηθά στον διαχωρισμό της εντολής από τον χαρακτήρα διαφυγής. Όταν βάζετε ένα κωδικός χρώματος ως εντολή, αλλάζει το χρώμα του επερχόμενου κειμένου:
33[0;34
0;34
είναι ο κωδικός για το μπλε χρώμα, για παράδειγμα. Μόνο με αυτό, μπορείτε να αλλάξετε το χρώμα του κειμένου echo
με:
33[0;34Text
Πού Text
θα χρωματιζόταν μπλε. Εναλλακτικά, σκεφτείτε ένα απλό σενάριο bash για εκτύπωση "Καλωσήρθατε στη Γαλλία" στα χρώματα της γαλλικής σημαίας:
#!/bin/bash
BLUE='33[0;34m'
WHITE= '33[0;37m'
RED= '33[0;31m'
echo -e "${Blue}Welcome ${WHITE}to ${RED}France"
Το προαιρετικό -e
σημαία του echo
Η εντολή σάς επιτρέπει να χρησιμοποιείτε ειδικούς χαρακτήρες όπως n
(νέα γραμμή) και t
(καρτέλα) μέσα στη συμβολοσειρά εισόδου.
Μόλις εκτελέσετε το σενάριο:
$ ./colors.sh
Έχει ως αποτέλεσμα:
Οι κωδικοί ANSI δεν περιορίζονται στο χρώμα – αλλά μπορούν επίσης να εφαρμοστούν για στυλ. Οι κωδικοί 0..9
αντιπροσωπεύουν στυλ κειμένου, ενώ οι κώδικες 30...37
αντιπροσωπεύουν χρώματα:
Χρώμα | Κώδικες | Στυλ κειμένου | Κώδικες |
Μαύρη | 30 | Απλό κείμενο | 0 |
Red | 31 | Έντονο κείμενο | 1 |
Πράσινο | 32 | Κείμενο χαμηλής έντασης | 2 |
Καφέ / Πορτοκαλί | 33 | Υπογράμμιση κειμένου | 4 |
Μπλε | 34 | Κείμενο που αναβοσβήνει | 5 |
Μωβ | 35 | Αόρατο κείμενο | 8 |
Κυανό | 36 | Διαγραφή κειμένου | 9 |
Light Gray | 37 |
Ας δημιουργήσουμε ένα σενάριο bash για να εξερευνήσουμε μερικές από αυτές τις επιλογές:
#!/bin/bash
echo -e "33[0;33mSample text"
echo -e "33[1;33mBold text"
echo -e "33[2;33mLow intensity text"
echo -e "33[4;33mUnderline text"
echo -e "33[5;33mBlinking text"
echo -e "33[8;33mInvisible text"
echo -e "33[9;33mStrikethrough text"
Η εκτέλεση αυτού του σεναρίου έχει ως αποτέλεσμα:
Ρίξτε μια ματιά στον πρακτικό μας οδηγό για την εκμάθηση του Git, με βέλτιστες πρακτικές, πρότυπα αποδεκτά από τον κλάδο και συμπεριλαμβανόμενο φύλλο εξαπάτησης. Σταματήστε τις εντολές του Git στο Google και πραγματικά μαθαίνουν το!
Ομοίως, μπορείτε να αλλάξετε το χρώμα φόντου αυτών των κειμένων χρησιμοποιώντας κωδικούς 40..47
:
χρώμα | Κώδικες |
Μαύρη | 40 |
Red | 41 |
Πράσινο | 42 |
Καφέ / Πορτοκαλί | 43 |
Μπλε | 44 |
Μωβ | 45 |
Κυανό | 46 |
Light Gray | 47 |
Η αλλαγή του φόντου μιας δεδομένης συμβολοσειράς συνοψίζεται στον ίδιο κανόνα όπως και κατά την αλλαγή του χρώματος της γραμματοσειράς - ο ίδιος ο κώδικας αλλάζει τη συμπεριφορά:
#!/bin/bash
BLUE='33[0;44m'
BLACK='33[0;30m'
WHITE='33[0;30;47m'
RED='33[0;41m'
echo -e "${BLUE}Welcome ${WHITE}to ${RED}France"
Σημείωση: Κατά κανόνα – μπορείτε να μεταφράσετε χρώματα γραμματοσειράς σε χρώματα φόντου προσθέτοντας 10. 30
είναι μαύρο χρώμα γραμματοσειράς, 40
είναι μαύρο χρώμα φόντου.
Αλλάξτε το χρώμα εξόδου με το tput
Μια εναλλακτική λύση στους κωδικούς ANSI είναι η χρήση του tput
εντολή:
$ tput setaf color_code
setf
επιτρέπει 8 χρώματα, ενώ setaf
επιτρέπει 256 χρώματα, επομένως, ανάλογα με την εντολή που χρησιμοποιείτε, μπορείτε να μεταβείτε 0..7
και 0..255
όπως οι χρωματικοί κωδικοί. Και τα δύο εντολές αφιερώνω 0..7
στους ίδιους χρωματικούς κωδικούς, ενώ με setaf
, 8..15
είναι χρώματα υψηλής έντασης και 16..231
είναι διαφορετικές αποχρώσεις των πρώτων 8, και 232..255
είναι χρώματα σε κλίμακα του γκρι:
πίστωσης: Wikipedia
Τέλος, tput
σας επιτρέπει επίσης να αλλάξετε το χρώμα του φόντου, να προσθέσετε έντονη γραφή, να μειώσετε την ένταση κ.λπ. με άλλες εντολές:
Στυλ κειμένου | Εντολές |
Χρώμα πρώτου πλάνου | σεταφ |
Χρώμα του φόντου | setab |
Χωρίς στυλ | sgv0 |
Έντονο κείμενο | |
Κείμενο χαμηλής έντασης | αμυδρός |
Υπογράμμιση κειμένου | smul |
Κείμενο που αναβοσβήνει | αναβοσβήνει |
Αντίστροφο κείμενο | στροφή μηχανής |
Ας δημιουργήσουμε ένα άλλο σενάριο που χρησιμοποιεί tput
για να αλλάξετε το χρώμα εξόδου echo
:
#!/bin/bash
YELLOW=`tput setaf 3`
echo "${YELLOW}Changing"
WHITE=`tput setaf 7 bold`
echo "${WHITE}Colors"
BLUE=`tput setaf 4 smul`
echo "${BLUE}With tput"
CYAN=`tput setaf 6 blink`
echo "${CYAN}is less"
RED=`tput setab 1 setaf 7`
echo "${RED}verbose!"
Αυτή η δέσμη ενεργειών θα εκτυπώσει την ακόλουθη έξοδο στο τερματικό:
Η εντολή tput παρέχει έναν εύκολο τρόπο εκτύπωσης οποιουδήποτε χρώματος μέσω ενός απλού χρωματικού κώδικα. Ας δημιουργήσουμε τώρα ένα σενάριο που μπορεί να εκτυπώσει κάθε χρωματικό κώδικα που είναι διαθέσιμος για την εντολή tput:
#!/bin/bash
tput init
end = $ (($ (tput colors) - 1))
w = 1
for c
in $ (seq 0 $end)
do
eval "$(printf " tput setaf % 3 s " " $c ")"
echo - n "$_"
[[$c - ge $ ((w * 2))]]
offset = 2 || offset = 0
[[$ (((c + offset) % (w - offset))) - eq $ (((w - offset) - 1))]]
echo
done
tput init
Θα εκτυπώσει 0 έως 255 χρώματα και τους κωδικούς τους:
Συμπέρασμα
Σε αυτόν τον σύντομο οδηγό – ρίξαμε μια ματιά στο πώς μπορείτε να αλλάξετε το χρώμα του echo
's έξοδος στο Linux – χρησιμοποιώντας ANSI Escape Sequences και το tput
εντολή.
Εξερευνήσαμε επίσης πώς μπορείτε να κάνετε τη διαδικασία λιγότερο περιεκτική χρησιμοποιώντας μεταβλητές Bash, να τροποποιήσετε τα χρώματα φόντου και το κείμενο στυλ.