Do niedawna używałem głównie windowsa. Mimo ułomności konsoli windowsowej starałem się jej używać jak najczęściej. Przyzwyczaiłem się do braku kolorów w konsoli.

Jednak ostatnio przesiadłem się na linuxa. Muszę przyznać, że kolorki bardzo ułatwiają mi pracę w konsoli

$grep -r "costam" .

Wygląda bardzo ładnie i jest bardziej czytelne z kolorkami, niestety przy wielostronicowych wynikach już tak różowo nie jest, oczywiście można wszystko puścić przez pipe

$grep -r "costam" . | less

Niestety wtedy tracimy wcześniej opisane kolorki. Na szczęście jest sposób na ich odzyskanie, z pomocą przychodzą podręczniki do wyżej wspomnianych programów i opisane w nich opcje:

$grep -r "costam" --color=always . | less -R

Rozwiązaliśmy jeden problem, pojawia się następny, powyższej kombinacji używam dość często i najzwyklej w świcie nie chce mi się wypisywać za każdym razem dodatkowych opcji. Tym razem z pomocą przychodzą zmienne środowiskowe! Otóż okazuje się, że obu programów można zmodyfikować za pomocą zmiennych środowiskowych:

$export LESS=-R
$export GREP_OPTIONS=--color=always 

Wydawałoby się, że wszystko już jest w porządku, jednak niestety nie. Po wpisaniu:

$grep -r "costam" . | less

niestety nie uzyskujemy pożądanych rezultatów, dlaczego? Otóż okazuje się, że grep jest aliasem (na czystej, świeżej instalacji ubuntu 10.04)!

$alias
alias grep='grep --color=auto'

Właśnie ten alias powoduje pominięcie ustawień wyeksportowanych w zmiennej środowiskowej (ustawienia z linii poleceń mają pierwszeństwo przed tymi w $GREP_OPTIONS). Nie pozostaje nam nic innego jak stworzenie swojego aliasu:

$alias cgrep='grep --color=always'

Dzięki takim zmianom po wpisaniu $cgrep -r 'costam' . | less uzyskujemy stronicowane, kolorowane wyniki grepa. Podobne efekty można osiągnąć dla innych programów np. ls również posiada opcję --color.