Dodajemy trochę kolorów w CLI
Ostatni wpis był o tym jak zrobić skrypt CLI, teraz zajmiemy się wprowadzeniem kolorów. Kolory pomogą nam m.in w rozróżnianiu informacji od błędów, wizualnemu podziału bloków (np gdy skrypt musi wykonać wiele długich czynności to wizualnie można rozdzielić te sekcje od siebie, aby sprawniej przeczytać logi).
W tym wpisie skupimy się na „czystym” PHP’ie, ale wszystkie informacje zawarte tutaj wykorzystasz w dowolnym skrypcie napisanym w dowolnym języku. Więc zaczynamy zabawę od kolorowania tekstu.
Jak wspomniałem w poprzednim wpisie o tworzeniu skryptów shell kolorowanie zaczynamy od \e[kodm
następnie tekst i \e[0m]
echo "Ten tekst będzie na \e[31mczerwono\e[0m \r\n";
echo "Ten tekst będzie na \e[32mzielono\e[0m \r\n";
echo "Ten tekst jest standardowy\r\n";
i teraz rozkładamy to na czynniki pierwsze
- najpierw mamy znak ucieczki
\e
- kod koloru wg tabeli po niżej
m
zakończenie modyfikatora
Kod koloru | Nazwa |
0 | RESET |
30 | CZARNY |
31 | CZERWONY |
32 | ZIELONY |
33 | ŻÓŁTY |
34 | NIEBIESKI |
35 | FILETOWY |
36 | CYJAN |
37 | BIAŁY |
Okej więc mamy już ogarnięte kolory, ale teraz przyda nam się tło. Tło robimy w prawie identyczny sposób co kolor, z tym że zaczynamy wszystko od liczby 4:
Kod koloru | Nazwa |
0 | RESET |
40 | CZARNY |
41 | CZERWONY |
42 | ZIELONY |
43 | ŻÓŁTY |
44 | NIEBIESKI |
45 | FILETOWY |
46 | CYJAN |
47 | BIAŁY |
echo "Ten tekst będzie na \e[41mczerwono\e[0m \r\n";
echo "Ten tekst będzie na \e[42mzielono\e[0m \r\n";
echo "Ten tekst jest standardowy\r\n";
Kolory mamy za sobą to teraz czas na inne modyfikacje. Np pogrubienie tesktu. Tutaj operujemy wartościami od 0 – reset do 8 – niewidoczne:
Kod koloru | Nazwa |
0 | RESET |
1 | Pogrubienie |
2 | Przyciemnienie |
3 | Kursywa |
4 | Podkreślenie |
5 | Migający |
7 | Odwrócone kolory |
8 | Niewidoczny |
Uwaga! Wartość 6 jest pusta i nie jest używana. Jeszcze na koniec jak połączyć te wartości? Średnikiem:
echo "Ten tekst będzie na \e[1;31;42mjaki?\e[0m \r\n";
Jaki tego będzie efekt? Oprócz tego, że wyjątkowo brzydki? Spróbuj i pobaw się 😉