Wprowadzenie
Połączenia echo
polecenie wypisuje podany ciąg do standardowa rura wyjściowa, zwykle wskazujący na terminal. Chociaż standardowa rura wyjściowa może wskazywać na inne interfejsy – echo
Polecenie jest zwykle używane do drukowania i wyświetlania komunikatów w terminalu. Domyślnie tekst wyświetlanego komunikatu dziedziczy kolor innego tekstu w terminalu (który sam w sobie jest konfigurowalny). Istnieje jednak kilka sposobów na zmianę koloru wyjściowego echo
– zarówno dla pojedynczych ciągów, jak i całych wiadomości.
W tym krótkim przewodniku przyjrzymy się, jak zmienić kolor wyjściowy
echo
w systemach linuksowych z wykorzystaniem kodów escape ANSI,tput
i jak możesz uczynić ten proces mniej gadatliwym w skryptach Bash.
Zmień kolor wyjściowy za pomocą kodów ucieczkowych ANSI
Najłatwiejszym sposobem zmiany koloru jest użycie sekwencji/kodów ucieczki ANSI. Wszystkie kody ucieczki ANSI zaczynają się od Escape
znak, który można przedstawić w różnych formatach – 27
dziesiętnie, x1B
w systemie szesnastkowym, jak klawisz kontrolny ^[
lub 33
w formacie ósemkowym. Po sekwencjach następuje polecenie:
33[command
Gdzie otwierający wspornik (Wprowadzający sekwencje kontrolne) jest opcjonalny, ale pomaga oddzielić polecenie od znaku ucieczki. Kiedy umieścisz kod koloru jako polecenie zmienia kolor nadchodzącego tekstu:
33[0;34
0;34
to na przykład kod koloru niebieskiego. Za pomocą tego samego możesz zmienić kolor tekstu w echo
z:
33[0;34Text
Gdzie Text
miałby kolor niebieski. Alternatywnie rozważ wydrukowanie prostego skryptu bash "Witamy we Francji" w barwach flagi francuskiej:
#!/bin/bash
BLUE='33[0;34m'
WHITE= '33[0;37m'
RED= '33[0;31m'
echo -e "${Blue}Welcome ${WHITE}to ${RED}France"
Opcjonalne -e
flaga echo
polecenie pozwala używać znaków specjalnych, takich jak n
(nowa linia) i t
(tabulator) wewnątrz ciągu wejściowego.
Po uruchomieniu skryptu:
$ ./colors.sh
Powoduje to:
Kody ANSI nie ograniczają się do koloru – ale można je również zastosować dla stylu. Kody 0..9
reprezentują style tekstu, podczas gdy kody 30...37
reprezentują kolory:
Kolor | Kody | Style tekstu | Kody |
Czarny | 30 | Prosty tekst | 0 |
Czerwony | 31 | Pogrubiony tekst | 1 |
Zielony | 32 | Tekst o niskiej intensywności | 2 |
Brązowy / pomarańczowy | 33 | Podkreśl tekst | 4 |
Niebieski | 34 | Migający tekst | 5 |
Fioletowy | 35 | Niewidoczny tekst | 8 |
Cyan | 36 | Tekst przekreślony | 9 |
Jasny Szary | 37 |
Utwórzmy skrypt bash, aby zbadać niektóre z tych opcji:
#!/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"
Uruchomienie tego skryptu powoduje:
Zapoznaj się z naszym praktycznym, praktycznym przewodnikiem dotyczącym nauki Git, zawierającym najlepsze praktyki, standardy przyjęte w branży i dołączoną ściągawkę. Zatrzymaj polecenia Google Git, a właściwie uczyć się to!
Podobnie możesz zmienić kolor tła tych tekstów za pomocą kodów 40..47
:
kolor | Kody |
Czarny | 40 |
Czerwony | 41 |
Zielony | 42 |
Brązowy / pomarańczowy | 43 |
Niebieski | 44 |
Fioletowy | 45 |
Cyan | 46 |
Jasny Szary | 47 |
Zmiana tła danego napisu sprowadza się do tej samej zasady, co przy zmianie koloru czcionki – sam kod zmienia zachowanie:
#!/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"
Uwaga: Ogólna zasada – możesz przełożyć kolory czcionek na kolory tła, dodając 10. 30
to czarny kolor czcionki, 40
to czarny kolor tła.
Zmień kolor wyjściowy za pomocą tput
Alternatywą dla kodów ANSI jest użycie tput
polecenie:
$ tput setaf color_code
setf
pozwala na 8 kolorów, natomiast setaf
pozwala na 256 kolorów, więc w zależności od polecenia, którego używasz, możesz przechodzić między 0..7
i 0..255
jako kody kolorów. Obie polecenia dedykowane 0..7
do tych samych kodów kolorów, podczas gdy z setaf
, 8..15
są kolorami o dużej intensywności i 16..231
są różne odcienie pierwszych 8 i 232..255
to kolory w skali szarości:
kredyt: Wikipedia
Wreszcie, tput
umożliwia również zmianę koloru tła, dodanie pogrubienia, zmniejszenie intensywności itp. za pomocą innych poleceń:
Style tekstu | Polecenia |
Kolor pierwszego planu | ustawić |
Kolor tła | ustaw |
Brak stylu | sgv0 |
Pogrubiony tekst | |
Tekst o niskiej intensywności | przyciemniony |
Podkreśl tekst | smul |
Migający tekst | migać |
Odwróć tekst | obrót silnika |
Stwórzmy kolejny skrypt, który używa tput
aby zmienić kolor wyjściowy 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!"
Ten skrypt wyświetli w terminalu następujące dane wyjściowe:
Polecenie tput zapewnia łatwy sposób drukowania dowolnego koloru za pomocą prostego kodu koloru. Stwórzmy teraz skrypt, który może wydrukować każdy kod koloru dostępny dla polecenia 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
Wydrukuje od 0 do 255 kolorów i ich kody:
Wnioski
W tym krótkim przewodniku – przyjrzeliśmy się, jak możesz zmienić kolor echo
's w Linuksie – używając ANSI Escape Sequences i tput
dowództwo.
Zbadaliśmy również, w jaki sposób możesz uczynić proces mniej gadatliwym, używając zmiennych Bash, dostosowując kolory tła i styl tekstu.