Как я могу напечатать стандартную ошибку красного цвета в консоли вместо того же цвета стандартного вывода?
Возможно ли использовать Gnome Terminal ?
В общем, да, поскольку терминал Gnome является терминалом ANSI и поддерживает стандартные коды выхода ANSI.
Вот пример. Введите это в свой терминал:
echo -e "\e[01;31mREDRUM\e[0m"
Опция -e
позволяет интерпретировать коды обратной косой черты, так что \e
становится «Esc» (шестнадцатеричный код 0x1B). В качестве альтернативы, чтобы непосредственно ввести escape, нажмите ctrl-V kbd> Esc kbd>:
echo "^[[01;31mREDRUM^[[0m"
Escape и [
вместе образуют код, который распознается терминал. После этой последовательности вам нужно вставить разделенный двоеточием (;
) список атрибутов, оканчивающийся на m
. См. здесь для всех кодов. Примеры включают атрибут 0
(сбросьте все атрибуты, как вы могли заметить выше, это последовательность, завершающая мой пример) и набор стилей (подчеркнутый, яркий, жирный и т. Д.), А также несколько цветовых атрибутов.
Ответ выше говорит вам, как использовать цвет, когда вы пишете свою собственную программу.
Однако, если я правильно понимаю ваш вопрос, вы хотели бы иметь визуальное разделение для stderr и stdout всех ваших программ. Это не просто без анализа их вывода через фильтр. Вот пример (найден здесь ) как это сделать:
Определить функцию (вы можете поместить ее в свой файл .bashrc):
[ 112]Запустите такие программы:
color program
Стандер из программ будет окрашен в красный цвет.
Я использую stderred и нашел его хорошим решением. Как указано в readme :
Stderred перехватывает write () и семейство потоковых функций (fwrite, fprintf, error ...) из libc для раскрашивания всех stderr вывод, который идет на терминал, что делает его отличным от стандартного вывода. В основном он переносит текст, который идет в файл с дескриптором «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
не будет прочитан, когда установлена другая среда):
( Кстати, он не переворачивает мою подсказку duke @ nukem красным, поскольку она уже была красной )