Uso stderred e l'ho trovata una buona soluzione. Come nota il suo readme :
Hook stderred su write () e una famiglia di funzioni stream (fwrite, fprintf, errore ...) da libc per colorare tutto l'output stderr che va al terminale rendendolo distinguibile da stdout. Fondamentalmente racchiude il testo che va al file con il descrittore "2" con i codici di escape ANSI corretti che rendono il testo rosso.
È implementato come libreria condivisa e non richiede la ricompilazione di file binari esistenti grazie alla funzione di precarico / inserimento dei linker dinamici.
È supportato su Linux (con LD_PRELOAD), FreeBSD (anche LD_PRELOAD) e OSX (con DYLD_INSERT_LIBRARIES).
È semplice da compilare, ma è necessario crearlo dal sorgente seguendo le istruzioni dal suo sito Github :
sudo apt-get install build-essential git cmake
Poi
git clone git://github.com/sickill/stderred.git
cd stderred
Poi
make
La parte più importante è aggiungere la linea appropriata al tuo .bashrc
; è necessario il collegamento al libstderred.so
file nella directory di generazione; è necessario utilizzare il percorso assoluto in cui si trova la directory di build (/ home / mike / src / stderred / build). Aggiungo quanto segue al mio .bashrc
:
export LD_PRELOAD="/home/mike/src/stderred/build/libstderred.so${LD_PRELOAD:+:$LD_PRELOAD}"
Ovviamente, quando non vuoi più usarlo, rimuovi la linea sopra dalla tua .bashrc
e riavvia il terminale.
I risultati, testati su file inesistenti (ovviamente non funzionerà quando sudo
viene utilizzato, in quanto l'utente .bashrc
non verrà letto quando viene impostato il diverso ambiente):
(A proposito, il mio duke @ nukem non diventa rosso perché era già rosso )