J'utilise stderred et l'ai trouvé une bonne solution. Comme son readme le note:
Stderred accroche sur write () et une famille de fonctions de flux (fwrite, fprintf, error ...) de libc afin de coloriser toutes les sorties stderr qui vont au terminal, ce qui le distingue de stdout. Fondamentalement, il enveloppe le texte qui va dans le fichier avec le descripteur "2" avec les codes d'échappement ANSI appropriés, ce qui rend le texte rouge.
Il est implémenté en tant que bibliothèque partagée et ne nécessite pas de recompilation des binaires existants grâce à la fonction de préchargement / insertion des éditeurs de liens dynamiques.
Il est pris en charge sur Linux (avec LD_PRELOAD), FreeBSD (également LD_PRELOAD) et OSX (avec DYLD_INSERT_LIBRARIES).
Il est simple à compiler, mais vous devez le construire à partir des sources en suivant les instructions de son site Github :
sudo apt-get install build-essential git cmake
alors
git clone git://github.com/sickill/stderred.git
cd stderred
alors
make
La partie la plus importante consiste à ajouter la ligne appropriée à votre .bashrc
; vous devez libstderred.so
créer un lien vers le fichier dans le répertoire de construction; vous devez utiliser le chemin absolu où se trouve le répertoire de construction (/ home / mike / src / stderred / build). J'ajoute ce qui suit à mon .bashrc
:
export LD_PRELOAD="/home/mike/src/stderred/build/libstderred.so${LD_PRELOAD:+:$LD_PRELOAD}"
Évidemment, lorsque vous ne souhaitez plus l'utiliser, supprimez la ligne ci-dessus de votre .bashrc
et redémarrez le terminal.
Les résultats, testés sur des fichiers inexistants (cela ne fonctionnera évidemment pas lorsqu'il sudo
est utilisé, car l'utilisateur ne .bashrc
sera pas lu lorsque l'environnement différent sera défini):
(Soit dit en passant, cela ne transforme pas mon invite duke @ nukem en rouge car c'était déjà rouge )