Predstavitev
O echo
ukaz izpiše dani niz v standardna izhodna cev, ki običajno kaže na terminal. Čeprav lahko standardna izhodna cev kaže na druge vmesnike – na echo
ukaz se običajno uporablja za tiskanje in prikazovanje sporočil v terminalu. Privzeto besedilo prikazanega sporočila podeduje barvo drugega besedila v terminalu (ki je samo po sebi prilagodljivo). Vendar – obstaja več načinov, kako lahko spremenite barvo izpisa echo
– tako za posamezne nize kot za celotna sporočila.
V tem kratkem vodniku si bomo ogledali, kako lahko spremenite barvo izpisa
echo
v sistemih, ki temeljijo na Linuxu, z uporabo ubežnih kod ANSI,tput
in kako lahko v skriptih Bash naredite ta postopek manj podroben.
Spremenite barvo izhoda z ubežnimi kodami ANSI
Najlažji način za spreminjanje barve je z ubežnimi zaporedji/kodami ANSI. Vse ubežne kode ANSI se začnejo z Escape
znak, ki je lahko predstavljen v različnih oblikah – 27
v decimalki, x1B
v šestnajstiški obliki kot kontrolni ključ ^[
ali 33
v osmiški obliki. Zaporedjem nato sledi ukaz:
33[command
Kje je začetni oklepaj (Uvajalec kontrolnega zaporedja) ni obvezen, vendar pomaga ločiti ukaz od ubežnega znaka. Ko postavite a barvna koda kot ukaz spremeni barvo prihajajočega besedila:
33[0;34
0;34
je na primer koda za modro barvo. Samo s tem lahko spremenite barvo besedila v echo
z:
33[0;34Text
Kje Text
bi bil obarvan modro. Druga možnost je, da razmislite o preprostem bash skriptu za tiskanje “Dobrodošli v Franciji” v barvah francoske zastave:
#!/bin/bash
BLUE='33[0;34m'
WHITE= '33[0;37m'
RED= '33[0;31m'
echo -e "${Blue}Welcome ${WHITE}to ${RED}France"
Izbirno -e
zastava echo
ukaz vam omogoča uporabo posebnih znakov, kot je n
(nova vrstica) in t
(zavihek) znotraj vnosnega niza.
Ko zaženete skript:
$ ./colors.sh
Posledica tega je:
Kode ANSI niso omejene na barvo – ampak jih je mogoče uporabiti tudi za slog. Kode 0..9
predstavljajo besedilne sloge, medtem ko kode 30...37
predstavlja barve:
Barva | Kode | Slogi besedila | Kode |
črna | 30 | Preprosto besedilo | 0 |
Rdeča | 31 | Krepko besedilo | 1 |
Zelen | 32 | Besedilo nizke intenzivnosti | 2 |
Rjava / oranžna | 33 | Podčrtaj besedilo | 4 |
Modra | 34 | Utripajoče besedilo | 5 |
Vijolična | 35 | Nevidno besedilo | 8 |
Cijan | 36 | Prečrtano besedilo | 9 |
Svetlo Siva | 37 |
Ustvarimo skript bash, da raziščemo nekatere od teh možnosti:
#!/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"
Zagon tega skripta povzroči:
Oglejte si naš praktični, praktični vodnik za učenje Gita z najboljšimi praksami, standardi, sprejetimi v panogi, in priloženo goljufijo. Nehajte Googlati ukaze Git in pravzaprav naučiti it!
Podobno lahko spremenite barvo ozadja teh besedil z uporabo kod 40..47
:
barva | Kode |
črna | 40 |
Rdeča | 41 |
Zelen | 42 |
Rjava / oranžna | 43 |
Modra | 44 |
Vijolična | 45 |
Cijan | 46 |
Svetlo Siva | 47 |
Spreminjanje ozadja danega niza se zmanjša na isto pravilo kot pri spreminjanju barve pisave – koda sama spremeni vedenje:
#!/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"
Opomba: Kot pravilo – barve pisave lahko prevedete v barve ozadja tako, da dodate 10. 30
črna barva pisave, 40
je črna barva ozadja.
Spremenite barvo izhoda s tipko tput
Alternativa kodam ANSI je uporaba tput
ukaz:
$ tput setaf color_code
setf
omogoča 8 barv, medtem ko setaf
omogoča 256 barv, tako da lahko izbirate med njimi, odvisno od ukaza, ki ga uporabljate 0..7
in 0..255
kot barvne kode. oba ukazi posvetiti 0..7
na iste barvne kode, medtem ko z setaf
, 8..15
so barve visoke intenzivnosti in 16..231
so različni odtenki prvih 8 in 232..255
so sivine barve:
Zasluge: Wikipedia
Končno, tput
omogoča tudi spreminjanje barve ozadja, dodajanje krepkosti, znižanje intenzivnosti itd. z drugimi ukazi:
Slogi besedila | ukazi |
Barva ospredja | setaf |
Barva ozadja | setab |
Brez stila | sgv0 |
Krepko besedilo | krepko |
Besedilo nizke intenzivnosti | Ne |
Podčrtaj besedilo | smul |
Utripajoče besedilo | utripa |
Obrnjeno besedilo | vrtljajev |
Ustvarimo drug skript, ki uporablja tput
da spremenite barvo izpisa 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!"
Ta skript bo na terminalu natisnil naslednje rezultate:
Ukaz tput omogoča preprost način tiskanja katere koli barve s preprosto barvno kodo. Ustvarimo zdaj skript, ki lahko natisne vse barvne kode, ki so na voljo za ukaz 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
Natisne barve od 0 do 255 in njihove kode:
zaključek
V tem kratkem vodniku – smo si ogledali, kako lahko spremenite barvo echo
izhod v Linuxu – z uporabo ubežnih zaporedij ANSI in tput
ukaz.
Raziskali smo tudi, kako lahko postopek naredite manj podroben z uporabo spremenljivk Bash, prilagodite barve ozadja in slog besedila.