Introduksjon
De echo
kommandoen sender ut en gitt streng til standard utgangsrør, vanligvis peker mot terminalen. Selv om standard utgangsrør kan peke til andre grensesnitt – den echo
kommandoen brukes vanligvis til å skrive ut og vise meldinger i terminalen. Som standard arver teksten til den viste melding fargen til annen tekst i terminalen (som kan tilpasses i seg selv). Imidlertid er det flere måter du kan endre utdatafargen på echo
– både for individuelle strenger og for hele meldinger.
I denne korte veiledningen tar vi en titt på hvordan du kan endre utdatafargen til
echo
i Linux-baserte systemer, ved å bruke ANSI escape-koder,tput
og hvordan du kan gjøre denne prosessen mindre omfattende i Bash-skript.
Endre utdatafarge med ANSI Escape-koder
Den enkleste måten å endre farge på er gjennom ANSI escape-sekvenser/koder. Alle ANSI escape-koder starter med Escape
tegn, som kan representeres i ulike formater – 27
i desimal, x1B
i heksadesimal, som kontrollnøkkel ^[
eller 33
i oktalt format. Sekvensene blir deretter fulgt av kommandoen:
33[command
Hvor åpningsbraketten (Kontrollsekvensintroduser) er valgfritt, men hjelper til med å skille kommandoen fra escape-tegnet. Når du setter en fargekode som kommandoen endrer den fargen på den møtende teksten:
33[0;34
0;34
er koden for fargen blå, for eksempel. Med dette alene kan du endre fargen på teksten i echo
med:
33[0;34Text
Hvor Text
ville være blåfarget. Alternativt kan du vurdere et enkelt bash-skript å skrive ut "Velkommen til Frankrike" i fargene til det franske flagget:
#!/bin/bash
BLUE='33[0;34m'
WHITE= '33[0;37m'
RED= '33[0;31m'
echo -e "${Blue}Welcome ${WHITE}to ${RED}France"
Valgfritt -e
flagget til echo
kommando lar deg bruke spesialtegn som n
(nylinje) og t
(tab) inne i inndatastrengen.
Når du kjører skriptet:
$ ./colors.sh
Det resulterer i:
ANSI-kodene er ikke begrenset til farger – men kan også brukes for stil. Kodene 0..9
representerer tekststiler, mens kodene 30...37
representerer farger:
FARGE | Koder | Tekststiler | Koder |
Svart | 30 | Enkel tekst | 0 |
Rød | 31 | Fet skrift | 1 |
Grønn | 32 | Tekst med lav intensitet | 2 |
Brun / Orange | 33 | Understrek tekst | 4 |
Blå | 34 | Blinkende tekst | 5 |
Purple | 35 | Usynlig tekst | 8 |
Cyan | 36 | Gjennomstrekingstekst | 9 |
Lysegrå | 37 |
La oss lage et bash-skript for å utforske noen av disse alternativene:
#!/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"
Å kjøre dette skriptet resulterer i:
Sjekk ut vår praktiske, praktiske guide for å lære Git, med beste praksis, bransjeaksepterte standarder og inkludert jukseark. Slutt å google Git-kommandoer og faktisk lære den!
På samme måte kan du endre bakgrunnsfargen til disse tekstene ved å bruke koder 40..47
:
farge | Koder |
Svart | 40 |
Rød | 41 |
Grønn | 42 |
Brun / Orange | 43 |
Blå | 44 |
Purple | 45 |
Cyan | 46 |
Lysegrå | 47 |
Å endre bakgrunnen til en gitt streng koker ned til den samme regelen som når du endrer skriftfargen – selve koden endrer oppførselen:
#!/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"
OBS: Som en tommelfingerregel – du kan oversette skriftfarger til bakgrunnsfarger ved å legge til 10. 30
er svart skriftfarge, 40
er svart bakgrunnsfarge.
Endre utdatafargen med tput
Et alternativ til ANSI-koder er å bruke tput
kommando:
$ tput setaf color_code
setf
gir mulighet for 8 farger, mens setaf
tillater 256 farger, så avhengig av kommandoen du bruker, kan du gå mellom 0..7
og 0..255
som fargekodene. Begge kommandoer dedikerer 0..7
til samme fargekoder, mens med setaf
, 8..15
er høyintensitetsfarger, og 16..231
er forskjellige nyanser av de første 8, og 232..255
er gråtonefarger:
credit: Wikipedia
Endelig, tput
lar deg også endre bakgrunnsfargen, legge til fet skrift, senke intensiteten osv. med andre kommandoer:
Tekststiler | Kommandoer |
Forgrunnsfarge | setaf |
Bakgrunnsfarge | settab |
Ingen stil | sgv0 |
Fet skrift | pin |
Lav intensitet tekst | Søn |
Understrek tekst | smul |
Blinkende tekst | blinke |
Omvendt tekst | rev |
La oss lage et annet skript som bruker tput
for å endre utdatafargen 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!"
Dette skriptet vil skrive ut følgende utdata i terminalen:
tput-kommandoen gir en enkel måte å skrive ut hvilken som helst farge gjennom en enkel fargekode. La oss nå lage et skript som kan skrive ut hver fargekode som er tilgjengelig for tput-kommandoen:
#!/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
Den vil skrive ut 0 til 255 farger og deres koder:
konklusjonen
I denne korte guiden – har vi tatt en titt på hvordan du kan endre fargen på echo
sin utgang i Linux – ved å bruke ANSI Escape Sequences og tput
kommando.
Vi har også utforsket hvordan du kan gjøre prosessen mindre omfattende ved å bruke Bash-variabler, justere bakgrunnsfarger og stiltekst.