Aby wyświetlać i formatować tekst w terminalu za pomocą skryptów Bash, należy poznać mechanizmy kolorowania oraz stylizacji tekstu przy użyciu tzw. sekwencji kontrolnych ANSI. Poniżej znajdziesz rozbudowany poradnik krok po kroku, zawierający podstawy, przykłady oraz praktyczne wskazówki.
1. Podstawy wyświetlania tekstu w Bashu
Najczęściej do wypisywania tekstu używana jest komenda echo
:
echo "To jest zwykły tekst"
Możesz też użyć opcji:
- -n – nie przechodzi do nowej linii po zakończeniu wypisywania
- -e – umożliwia korzystanie ze znaków specjalnych, np.
\n
,\t
, czy właśnie sekwencji kontroli koloru
echo -e "Przyklad\nZ nową linią"
2. Formatowanie i kolorowanie tekstu (ANSI escape codes)
Sekwencje kontrolne – podstawa kolorowania
Formatowanie tekstu w terminalu osiąga się przez poprzedzenie go odpowiednią sekwencją znaków:
- Sekwencje zawsze zaczynają się od
\e[
(lub\033[
) - Następnie wpisuje się jeden lub więcej kodów oddzielonych średnikiem, kończąc na literze
m
- Na końcu tekstu należy zresetować formatowanie przez
\e[0m
Najważniejsze kody formatowania
Efekt | Kod | Przykład w echo |
---|---|---|
Domyślny | 0 | \e[0m |
Pogrubienie | 1 | \e[1m |
Podkreślenie | 4 | \e[4m |
Odwrócenie | 7 | \e[7m |
Kolory podstawowe
Kolor | Kod tekstu | Kod tła |
---|---|---|
Czarny | 30 | 40 |
Czerwony | 31 | 41 |
Zielony | 32 | 42 |
Żółty | 33 | 43 |
Niebieski | 34 | 44 |
Purpurowy | 35 | 45 |
Cyjan | 36 | 46 |
Biały | 37 | 47 |
Przykład
echo -e "\e[31mCzerwony tekst\e[0m" echo -e "\e[42mZielone tło\e[0m" echo -e "\e[1;34mPogrubiony niebieski tekst\e[0m"
Dzięki opcji -e
polecenie echo
interpretuje sekwencje kontrolne.
3. Automatyzacja i własne funkcje kolorujące
Aby ułatwić sobie pracę, warto przypisać sekwencje kolorów do zmiennych:
CZERWONY="\e[31m" ZIELONY="\e[32m" NIEBIESKI="\e[34m" RESET="\e[0m" echo -e "${CZERWONY}Błąd!${RESET}"
Możesz też stworzyć funkcję, aby używać kolorów w wielu miejscach:
drukuj_info() { echo -e "\e[1;34m[INFO] $1\e[0m" } drukuj_info "To jest komunikat informacyjny"
To pomaga utrzymać jednolity wygląd skryptów i łatwiej zarządzać stylami.
4. Wyświetlanie wszystkich dostępnych kombinacji kolorów
Do sprawdzenia dostępnych stylów i kolorów możesz użyć prostego skryptu z pętlami:
for style in 0 1 2 4 5 7; do for fg in {30..37}; do for bg in {40..47}; do echo -ne "\e[${style};${fg};${bg}m style=${style};${fg};${bg} \e[0m " done echo done done
Pozwala to zobaczyć, jak dana kombinacja będzie wyglądać w Twoim terminalu.
5. Ograniczenia i dobre praktyki
- Logowanie do plików – Sekwencje kolorów nie mają sensu, gdy wyjście kierowane jest do pliku (zostaną zapisane surowe kody). Warto wykrywać, czy stdout to terminal, i kolorować tylko wtedy, np.:
if [ -t 1 ]; then echo -e "\e[32mZielony tekst tylko dla terminala\e[0m" else echo "Tekst bez kolorów" fi
- Zgodność – Niektóre starsze lub minimalne terminale nie obsługują kolorów — zawsze warto to przetestować.
6. Przykładowy skrypt z kolorowaniem i formatowaniem
#!/bin/bash INFO="\e[1;34m[INFO]\e[0m" OK="\e[1;32m[OK]\e[0m" WARN="\e[1;33m[WARNING]\e[0m" ERR="\e[1;31m[ERROR]\e[0m" echo -e "$INFO Startowanie skryptu" echo -e "$OK Operacja zakończona sukcesem" echo -e "$WARN To jest ostrzeżenie" echo -e "$ERR Wystąpił błąd"
Ten prosty szablon możesz zaadaptować do własnych projektów.
7. Dalsza lektura i nauka podstaw Bash
Oprócz samego formatowania, opanuj podstawową składnię Basha:
- Definiowanie skryptu od shebanga
#!/bin/bash
- Uprawnienia:
chmod +x skrypt.sh
, uruchamianie./skrypt.sh
- Użycie
echo
,read
, warunków if, pętli for/while
Podsumowanie
Kolorowanie tekstu i formatowanie komunikatów w terminalu znacząco poprawia czytelność skryptów i komunikatów dla użytkowników. Powyższe przykłady i praktyki pozwolą Ci samodzielnie budować atrakcyjne i czytelne skrypty na Linuksie.