Terminal pogryzł człowieka: rainbow
Opis w repozytorium rzecze: „Rainbow is a isolation shell which implements portions of the Bitfrost security architecture, as used on the OLPC XO-1 and elsewhere”. Że co? Ano to, że to nie o tytułowy rainbow chodzi. Bo tym razem interesuje nas jak sprytnie i bezboleśnie przeprowadzić kolorowanie w terminalu.
Ile razy spotkaliśmy się z tym, że chcieliśmy śledzić na żywo zmieniający się plik z wiadomościami systemowymi? Jednak w natłoku informacji umykały nam te istotne, mieniące się identyczną i beznamiętną szarzyzną pozostałych komunikatów. Albo chcieliśmy uwypuklić standardowe wyjście jakiegoś polecenia, by lepiej zrozumieć jego wyniki. I tak dalej. Oczywiście każdy z nas ma swoje rozwiązanie na powyższe problemy. Od używania programów które same z siebie potrafią już kolorować (multitail zamiast tail), aż po łamańce typu:
#$ red=$( tput -Txterm setaf 1);norm=$( tput -Txterm sgr0);bold=$( tput -Txterm bold );tail -F /var/log/syslog | sed "s/\(.info.*\)/$red$bold\1$norm/g"
Ale jeśli chcemy by było prosto i czytelnie dlaczego by nie użyć rainbow? Program nie wymaga skomplikowanych plików konfiguracyjnych (vide grc). Wszystko co należy zrobić to opisać w jakim kolorze chcemy widzieć daną frazę (tu z pomocą mogą przyjść wyrażenia regex) i wpisać polecenie które wyświetla pożądane przez nas informacje.
#$ rainbow --red="info" tail -f /var/log/syslog
Oczywiście to zaledwie początek ciekawostek jakie drzemią w tym programie. Wzory ciągów możemy określać, jak już wspomniałem, za pomocą wyrażeń regularnych. Odpowiednie opcje zadbają o pokolorowanie ciągu lub jego tła. Lub zakresu znaków od ciągu do ciągu:
#$ rainbow --red-before="systemd" --reset-after=" " tail -f /var/log/syslog
Wszystkie bardziej skomplikowane wyrażenia jakie stworzymy, możemy zapisać do pliku konfiguracyjnego. W celu późniejszego łatwego wywołania za pomocą
#$ rainbow --config plik_konfiguracyjny
Jak widać, tych konfiguracji może być więcej – na każdą okazję. Prawda, że to całkiem poręczne narzędzie? Niestety, nie znajdziemy go w podstawowych repozytoriach. Konieczne będzie zainstalowanie paczki pobranej z Githuba – a przepraszam, tym razem z OBS (Ubuntu, Debian, Mint, openSUSE, Fedora, Mageia i inne).