Bevezetés
A echo
parancs egy adott karakterláncot ad ki a szabványos kimeneti cső, jellemzően a terminálra mutat. Bár a szabványos kimeneti cső más interfészekre is mutathat – a echo
parancs jellemzően üzenetek nyomtatására és megjelenítésére szolgál a terminálon. Alapértelmezés szerint a megjelenített üzenet szövege örökli a terminálban található egyéb szövegek színét (ami önmagában is testreszabható). Azonban – többféleképpen is módosíthatja a kimenet színét echo
– mind az egyes karakterláncokhoz, mind a teljes üzenetekhez.
Ebben a rövid útmutatóban megvizsgáljuk, hogyan módosíthatja a kimeneti színt
echo
Linux alapú rendszerekben, ANSI escape kódokkal,tput
és hogyan teheti ezt a folyamatot kevésbé bőbeszédűvé a Bash szkriptekben.
Módosítsa a kimeneti színt ANSI Escape kódokkal
A szín megváltoztatásának legegyszerűbb módja az ANSI escape szekvenciák/kódok. Minden ANSI escape kód a következővel kezdődik Escape
karakter, amely többféle formátumban ábrázolható – 27
tizedesben, x1B
hexadecimálisan, vezérlőgombként ^[
vagy 33
nyolcas formátumban. A sorozatokat ezután a következő parancs követi:
33[command
Ahol a nyitó zárójel (Control Sequence Introducer) nem kötelező, de segít elkülöníteni a parancsot az escape karaktertől. Amikor a színkód parancsként megváltoztatja a bejövő szöveg színét:
33[0;34
0;34
például a kék szín kódja. Csak ezzel módosíthatja a szöveg színét echo
val vel:
33[0;34Text
Hol Text
kék színű lenne. Alternatív megoldásként fontolja meg egy egyszerű bash szkript kinyomtatását "Üdvözöljük Franciaországban" a francia zászló színeiben:
#!/bin/bash
BLUE='33[0;34m'
WHITE= '33[0;37m'
RED= '33[0;31m'
echo -e "${Blue}Welcome ${WHITE}to ${RED}France"
Opcionális -e
zászló a echo
parancs lehetővé teszi speciális karakterek használatát, mint pl n
(újsor) és t
(tab) a beviteli karakterlánc belsejében.
A szkript futtatása után:
$ ./colors.sh
Ennek eredménye:
Az ANSI kódok nem korlátozódnak a színre, hanem stílusra is alkalmazhatók. A kódok 0..9
szövegstílusokat képviselnek, míg a kódok 30...37
színeket képviselnek:
színek | kódok | Szövegstílusok | kódok |
Fekete | 30 | Egyszerű szöveg | 0 |
Piros | 31 | Félkövér szöveg | 1 |
Zöld | 32 | Alacsony intenzitású szöveg | 2 |
Brown / Orange | 33 | A szöveg aláhúzása | 4 |
Kék | 34 | Villogó szöveg | 5 |
Lila | 35 | Láthatatlan szöveg | 8 |
Cián | 36 | Áthúzott szöveg | 9 |
Világos Szürke | 37 |
Hozzon létre egy bash szkriptet az alábbi lehetőségek felfedezéséhez:
#!/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"
A szkript futtatása a következőket eredményezi:
Tekintse meg gyakorlatias, gyakorlati útmutatónkat a Git tanulásához, amely tartalmazza a bevált gyakorlatokat, az iparág által elfogadott szabványokat és a mellékelt csalólapot. Hagyd abba a guglizást a Git parancsokkal, és valójában tanulni meg!
Hasonlóképpen módosíthatja ezeknek a szövegeknek a háttérszínét kódok segítségével 40..47
:
szín | kódok |
Fekete | 40 |
Piros | 41 |
Zöld | 42 |
Brown / Orange | 43 |
Kék | 44 |
Lila | 45 |
Cián | 46 |
Világos Szürke | 47 |
Egy adott karakterlánc hátterének megváltoztatása ugyanarra a szabályra vezethető vissza, mint a betűszín megváltoztatásakor – maga a kód megváltoztatja a viselkedést:
#!/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"
Jegyzet: Alapszabály – 10 hozzáadásával a betűszíneket háttérszínekre fordíthatja. 30
fekete betűszín, 40
fekete háttérszín.
Módosítsa a kimenet színét a tput segítségével
Az ANSI kódok alternatívája a tput
parancs:
$ tput setaf color_code
setf
8 színt tesz lehetővé, míg setaf
256 színt tesz lehetővé, így a használt parancstól függően válthat közöttük 0..7
és a 0..255
mint a színkódok. Mindkét parancsok dedikálnak 0..7
azonos színkódokhoz, míg a setaf
, 8..15
nagy intenzitású színek, és 16..231
az első 8 különböző árnyalatai, és 232..255
szürkeárnyalatos színek:
jóváírás: Wikipedia
Végül, tput
lehetővé teszi a háttérszín megváltoztatását, félkövér hozzáadását, az intenzitás csökkentését stb. más parancsokkal:
Szövegstílusok | Parancsok |
Előtér színe | setaf |
Háttér színe | settab |
Nincs stílus | sgv0 |
Félkövér szöveg | |
Alacsony intenzitású szöveg | V |
A szöveg aláhúzása | smul |
Villogó szöveg | pislog |
Fordított szöveg | fordulat |
Hozzon létre egy másik szkriptet, amely használja tput
a kimeneti szín megváltoztatásához 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!"
Ez a szkript a következő kimenetet írja ki a terminálon:
A tput parancs egyszerű módot biztosít bármilyen szín nyomtatására egy egyszerű színkód segítségével. Most hozzunk létre egy szkriptet, amely képes kinyomtatni a tput parancshoz elérhető összes színkódot:
#!/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 színt és azok kódjait nyomtatja ki:
Következtetés
Ebben a rövid útmutatóban megvizsgáltuk, hogyan változtathatja meg a színét echo
's kimenet Linux alatt – ANSI Escape Sequences és a tput
parancs.
Azt is megvizsgáltuk, hogyan teheti kevésbé bőbeszédűvé a folyamatot Bash-változók, a háttérszínek és a szövegstílus módosításával.