Zdaję sobie sprawę z bibliotek w językach takich jak Ruby i JavaScript, które ułatwiają kolorowanie skryptów terminali przy użyciu nazw kolorów takich jak „czerwony”.
Ale czy jest coś takiego dla skryptów powłoki w Bash, Ksh, czy cokolwiek innego?
bash
shell-script
terminal
colors
lustro
źródło
źródło
Odpowiedzi:
Możesz zdefiniować kolory w swoich skryptach bash w następujący sposób:
A następnie użyj ich do wydrukowania w wymaganych kolorach:
źródło
Możesz użyć
tput
ORprintf
Za pomocą
tput
,po prostu utwórz funkcję jak poniżej i użyj ich
możesz wywołać powyższą funkcję za pomocą
shw_err "WARNING:: Error bla bla"
Za pomocą
printf
źródło
echo -e
nie jestprintf
, a także potrzebuje ostrzeżenia, że różni się odtput
opcji tym, że nie dostosowuje się automatycznie do koloru$TERM
.W Zsh :
źródło
print -P '%F{red}blah%f'
Do prostych typowych zastosowań (pełny wiersz tekstu tylko w jednym kolorze, z końcowym znakiem nowej linii) zmodyfikowałem kod jasonwryan w następujący sposób:
źródło
awk -v red="$(printf '\e[1;31m%%s\e[0m\\n')" -v green="$(printf '\e[1;32m%%s\e[0m\\n')" 'BEGIN { printf red, "This text is in red"; printf green, "This text is in green" }'
Lepiej jest użyć,
tput
który będzie obsługiwał znaki specjalne w zależności od możliwości wyjścia / terminala. (Jeśli terminal nie może zinterpretować\e[*
kodów kolorów, zostanie „zanieczyszczony”, co utrudni odczytanie danych wyjściowych. (Lub czasami, jeśligrep
takie dane wyjściowe, zobaczysz je\e[*
w wynikach)Zobacz ten samouczek dla
tput
.Możesz pisać :
Oto samouczek drukowania kolorowego zegara w terminalu.
Zauważ również, że
tput
nadal może wypisywać znak zmiany znaczenia podczas przekierowywania STDOUT do pliku:Aby temu zapobiec, skonfiguruj
tput
zmienne zgodnie z proponowanym rozwiązaniem .źródło