Я використовую жорсткіші і вважаю це гарним рішенням. Як зазначається у читанні :
Штрихові гачки на write () та сімейство потокових функцій (fwrite, fprintf, помилка ...) від libc, щоб розфарбувати весь вихідний продукт stderr, що йде до терміналу, завдяки чому він відрізняється від stdout. В основному він обертає текст, який іде до файлу з дескриптором "2" з належними кодами аварійних відхилень ANSI, що робить текст червоним.
Він реалізований як спільна бібліотека і не вимагає перекомпіляції існуючих бінарних файлів завдяки функції попереднього завантаження / вставки динамічних лінкерів.
Він підтримується в Linux (з LD_PRELOAD), FreeBSD (також LD_PRELOAD) та OSX (з DYLD_INSERT_LIBRARIES).
Складати це просто, але вам потрібно створити його з джерела, дотримуючись інструкцій з його сайту Github :
sudo apt-get install build-essential git cmake
Потім
git clone git://github.com/sickill/stderred.git
cd stderred
Потім
make
Найважливіша його частина - додати відповідний рядок до свого .bashrc
; ви повинні посилатися на libstderred.so
файл у каталозі збірки; ви повинні використовувати абсолютний шлях, де знаходиться каталог збірки (/ home / mike / src / stderred / build). Я додаю наступне до свого .bashrc
:
export LD_PRELOAD="/home/mike/src/stderred/build/libstderred.so${LD_PRELOAD:+:$LD_PRELOAD}"
Очевидно, коли ви більше не хочете ним користуватися, видаліть вищезгаданий рядок зі свого .bashrc
та перезапустіть термінал.
Результати, протестовані на неіснуючих файлах (він, очевидно, не буде працювати при sudo
використанні, оскільки користувач .bashrc
не буде прочитаний, коли встановлено інше середовище):
(До речі , це НЕ повертає герцог @ Nukem швидких червоний , як було червоним вже )