Получите цветной вывод в bash

при компиляции некоторых проектов на терминале linux обычно получается длинный вывод, состоящий из большого количества информации. Обычно эта информация является MONOCHROME. Интересно, может ли bash быть каким-то образом изменено, поэтому во всех выходах или в некоторых конкретных выходах (например, из Makefile и т.д.) Я могу получить разные цвета, зависящие от, например:

make[1]: Leaving directory 

или

g++ -DHAVE_CONFIG_H     -I. 

и др.

Спасибо

Ответ 1

Конечно, просто используйте функции Bash, например, скажем:

make()
{
  pathpat="(/[^/]*)+:[0-9]+"
  ccred=$(echo -e "\033[0;31m")
  ccyellow=$(echo -e "\033[0;33m")
  ccend=$(echo -e "\033[0m")
  /usr/bin/make "[email protected]" 2>&1 | sed -E -e "/[Ee]rror[: ]/ s%$pathpat%$ccred&$ccend%g" -e "/[Ww]arning[: ]/ s%$pathpat%$ccyellow&$ccend%g"
  return ${PIPESTATUS[0]}
}

(Первоначально через Выделите предупреждения в Make.)

Ответ 2

Я обнаружил, что в bash tput setf не работает. Я нашел эти команды для bash, которые хорошо работают

handy tput commands

tput bold - Bold effect
tput rev - Display inverse colors
tput sgr0 - Reset everything
tput setaf {CODE}- Set foreground color, see color {CODE} below
tput setab {CODE}- Set background color, see color {CODE} below
Colors {code} code for tput command

Color {code}    Color
0    Black
1    Red
2    Green
3    Yellow
4    Blue
5    Magenta
6    Cyan
7    White

Ответ 3

Вы можете сделать это с помощью команды tput и базы данных terminfo(5). Например,

tput setf 5

с терминалом как стандартным, установит цвет переднего плана фиолетовым (или что-то вроде этого, я цвет слепой). tput setf 0 сбрасывает цвет переднего плана по умолчанию.

Для получения дополнительной информации просмотрите terminfo.

Ответ 4

Установка и использование colormake - еще одна простая опция.

 sudo apt-get install colormake