Introducere
echo
comanda trimite un șir dat către conductă de ieșire standard, arătând de obicei către terminal. Deși conducta de ieșire standard poate indica alte interfețe – cel echo
comanda este de obicei folosită pentru a tipări și afișa mesaje în terminal. În mod implicit, textul mesajului afișat moștenește culoarea altui text din terminal (care este personalizabil în sine). Cu toate acestea, există mai multe moduri în care puteți modifica culoarea de ieșire echo
– atât pentru șiruri individuale, cât și pentru mesaje întregi.
În acest scurt ghid, vom arunca o privire asupra modului în care puteți schimba culoarea de ieșire
echo
în sisteme bazate pe Linux, folosind coduri de evacuare ANSI,tput
și cum puteți face acest proces mai puțin pronunțat în scripturile Bash.
Schimbați culoarea de ieșire cu codurile de evacuare ANSI
Cel mai simplu mod de a schimba culoarea este prin secvențele/codurile de evacuare ANSI. Toate codurile de evacuare ANSI încep cu Escape
caracter, care poate fi reprezentat în diferite formate – 27
în zecimală, x1B
în hexazecimal, ca tasta de control ^[
, Sau 33
în format octal. Secvențele sunt apoi urmate de comanda:
33[command
Unde suportul de deschidere (Introducere a secvenței de control) este opțional, dar ajută la separarea comenzii de caracterul de evacuare. Când pui o Codul culorii ca și comandă, schimbă culoarea textului care se apropie:
33[0;34
0;34
este codul pentru culoarea albastru, de exemplu. Numai cu acest lucru, puteți schimba culoarea textului echo
cu:
33[0;34Text
Unde Text
ar fi colorat în albastru. Alternativ, luați în considerare un script bash simplu de imprimat "Bun venit în Franța" în culorile drapelului francez:
#!/bin/bash
BLUE='33[0;34m'
WHITE= '33[0;37m'
RED= '33[0;31m'
echo -e "${Blue}Welcome ${WHITE}to ${RED}France"
Opțional -e
steag al echo
comanda vă permite să utilizați caractere speciale precum n
(linie nouă) și t
(fila) în interiorul șirului de intrare.
Odată ce rulați scriptul:
$ ./colors.sh
Are ca rezultat:
Codurile ANSI nu se limitează la culoare, ci pot fi aplicate și pentru stil. Codurile 0..9
reprezintă stiluri de text, în timp ce codurile 30...37
reprezinta culorile:
Culori | Coduri | Stiluri de text | Coduri |
Negru | 30 | Text simplu | 0 |
Roșu | 31 | Text îndrăzneț | 1 |
Verde | 32 | Text cu intensitate redusă | 2 |
Maro / Portocaliu | 33 | Subliniați textul | 4 |
Albastru | 34 | Text care clipește | 5 |
Violet | 35 | Text invizibil | 8 |
Cyan | 36 | Text barat | 9 |
Lumina gri | 37 |
Să creăm un script bash pentru a explora unele dintre aceste opțiuni:
#!/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"
Rularea acestui script are ca rezultat:
Consultați ghidul nostru practic și practic pentru a învăța Git, cu cele mai bune practici, standarde acceptate de industrie și fisa de cheat incluse. Opriți căutarea pe Google a comenzilor Git și de fapt învăţa aceasta!
În mod similar, puteți schimba culoarea de fundal a acestor texte folosind coduri 40..47
:
culoare | Coduri |
Negru | 40 |
Roșu | 41 |
Verde | 42 |
Maro / Portocaliu | 43 |
Albastru | 44 |
Violet | 45 |
Cyan | 46 |
Lumina gri | 47 |
Schimbarea fundalului unui șir dat se rezumă la aceeași regulă ca atunci când schimbați culoarea fontului - codul în sine schimbă comportamentul:
#!/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"
Notă: Ca regulă generală - puteți traduce culorile fontului în culorile de fundal adăugând 10. 30
este culoarea fontului negru, 40
este culoarea de fundal neagră.
Schimbați culoarea de ieșire cu tput
O alternativă la codurile ANSI este utilizarea tput
comanda:
$ tput setaf color_code
setf
permite 8 culori, în timp ce setaf
permite 256 de culori, astfel încât, în funcție de comanda pe care o utilizați, puteți trece între ele 0..7
și 0..255
ca codurile de culoare. Ambele comenzile dedicate 0..7
la aceleași coduri de culoare, în timp ce cu setaf
, 8..15
sunt culori de mare intensitate și 16..231
sunt nuanțe diferite ale primelor 8 și 232..255
sunt culori în tonuri de gri:
Credit: Wikipedia
În cele din urmă, tput
de asemenea, vă permite să schimbați culoarea de fundal, să adăugați bold, să reduceți intensitatea etc. cu alte comenzi:
Stiluri de text | Comenzi |
Culoarea primului plan | setaf |
Culoarea fundalului | setab |
Fără stil | sgv0 |
Text îndrăzneț | |
Text de intensitate scăzută | vag |
Subliniați textul | smul |
Text care clipește | clipi din ochi |
Text invers | rev |
Să creăm un alt script care folosește tput
pentru a schimba culoarea de ieșire 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!"
Acest script va imprima următoarea ieșire în terminal:
Comanda tput oferă o modalitate ușoară de a imprima orice culoare printr-un cod de culoare simplu. Să creăm acum un script care poate imprima fiecare cod de culoare disponibil pentru comanda 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
Va imprima de la 0 la 255 de culori și codurile acestora:
Concluzie
În acest scurt ghid – am aruncat o privire asupra modului în care puteți schimba culoarea echo
Ieșirea lui în Linux – folosind secvențele de evacuare ANSI și tput
comanda.
De asemenea, am explorat modul în care puteți face procesul mai puțin detaliat folosind variabilele Bash, modificați culorile de fundal și stilul textului.