Używam stderreda i znalazłem dobre rozwiązanie. Jak zauważa w pliku readme :
Stderred przechwytuje zapis () i rodzinę funkcji strumieniowych (fwrite, fprintf, error ...) z libc w celu pokolorowania wszystkich danych wyjściowych stderr, które trafiają do terminala, dzięki czemu można je odróżnić od standardowego wyjścia. Zasadniczo zawija tekst, który trafia do pliku z deskryptorem „2” z odpowiednimi kodami specjalnymi ANSI, dzięki czemu tekst jest czerwony.
Jest zaimplementowany jako biblioteka współdzielona i nie wymaga ponownej kompilacji istniejących plików binarnych dzięki funkcji wstępnego ładowania / wstawiania dynamicznych linkerów.
Jest obsługiwany w systemie Linux (z LD_PRELOAD), FreeBSD (również LD_PRELOAD) i OSX (z DYLD_INSERT_LIBRARIES).
Kompilacja jest prosta, ale musisz ją skompilować ze źródła, postępując zgodnie z instrukcjami z witryny Github :
sudo apt-get install build-essential git cmake
Następnie
git clone git://github.com/sickill/stderred.git
cd stderred
Następnie
make
Najważniejszą częścią jest dodanie odpowiedniej linii do twojego .bashrc
; musisz połączyć się z libstderred.so
plikiem w katalogu kompilacji; musisz użyć bezwzględnej ścieżki, w której znajduje się katalog kompilacji (/ home / mike / src / stderred / build). Dodaję do mojego .bashrc
:
export LD_PRELOAD="/home/mike/src/stderred/build/libstderred.so${LD_PRELOAD:+:$LD_PRELOAD}"
Oczywiście, jeśli nie chcesz już z niego korzystać, usuń powyższą linię z .bashrc
i ponownie uruchom terminal.
Wyniki przetestowane na nieistniejących plikach (oczywiście nie będzie działać, gdy sudo
zostanie użyte, ponieważ użytkownik .bashrc
nie będzie czytany, gdy ustawione jest inne środowisko):
(Nawiasem mówiąc, to nie zmienia mojego monitu księcia @ nukem na czerwony, ponieważ był już czerwony )