Eu uso o stderred e achei uma boa solução. Como seu leia-me observa:
Ganchos Stderred em write () e uma família de funções de fluxo (fwrite, fprintf, error ...) da libc para colorir toda a saída stderr que vai para o terminal, tornando-o distinguível do stdout. Basicamente, ele envolve o texto que vai para o arquivo com o descritor "2" com os códigos de escape ANSI adequados, tornando o texto em vermelho.
Ele é implementado como uma biblioteca compartilhada e não requer recompilação de binários existentes, graças ao recurso de pré-carregamento / inserção de vinculadores dinâmicos.
É suportado no Linux (com LD_PRELOAD), FreeBSD (também LD_PRELOAD) e OSX (com DYLD_INSERT_LIBRARIES).
É fácil compilar, mas você precisa compilá-lo a partir do código-fonte, seguindo as instruções no site do Github :
sudo apt-get install build-essential git cmake
Então
git clone git://github.com/sickill/stderred.git
cd stderred
Então
make
A parte mais importante é adicionar a linha apropriada ao seu .bashrc
; você deve vincular ao libstderred.so
arquivo no diretório de construção; você deve usar o caminho absoluto em que o diretório de construção está (/ home / mike / src / stderred / build). Eu adiciono o seguinte ao meu .bashrc
:
export LD_PRELOAD="/home/mike/src/stderred/build/libstderred.so${LD_PRELOAD:+:$LD_PRELOAD}"
Obviamente, quando você não quiser mais usá-lo, remova a linha acima .bashrc
e reinicie o terminal.
Os resultados, testados em arquivos inexistentes (obviamente não funcionarão quando sudo
forem utilizados, pois o usuário .bashrc
não será lido quando o ambiente diferente estiver definido):
(Aliás, o prompt do duke @ nukem não fica vermelho, pois já era vermelho )