Вывод цветом в консоль Печать
Рейтинг пользователей: / 1
ХудшийЛучший 
Автор: yakim   
19.04.2011 09:00

У шелла bash есть возможность выводить не только чернобелый текст, но и раскрашивать вывод в разные цвета.

Делается это при помощи Escape-последовательностей.

Пример вывода:

echo -e 'open \E[40;31m\033[1mhttp://yakim.org.ua\033[0m in your browser'

Здесь вывод части текста будет красным цветом по черному фону.


Разберем эту строку:

-e — разрешаем esc-последовательности

\E[40;31m\033 — после этого выводим красным цветом на черном фоне

\033[0m — возвращаемся в черно-белый режим


Числовые значения цвета в escape-последовательностях

Цвет

Текст

Фон

черный

30

40

красный

31

41

зеленый

32

42

желтый

33

43

синий

34

44

пурпурный

35

45

зеленовато-голубой

36

46

белый

37

47

        

Так же текст можно делать жирным, подчеркнутым, мерцающим или инвертированным:

echo -e "\033[1mЭто жирный текст.\033[0m"

echo -e "\033[4mЭто подчеркнутый текст.\033[0m"

echo -e "\033[5mЭто мерцающий текст.\033[0m"

echo -e "\033[7mЭто инвертированный текст.\033[0m"

     

Так же никто не мешает объединять эти свойства. Например:

     

echo -e "\033[1m\033[5mЭто жирный мерцающий текст\033[0m"

      

Или даже так:

echo -e "\033[1m\033[5m\E[40;31m\033 Это жирный мерцающий текст красного цвета\033[0m"

      

Но у этого всего есть, к сожалению, и обратная сторона. Escape-последовательности очень слабо переносимы. Так что если у вас получился красивый, разноцветный и читабельный вывод, далеко не факт, что он таким же и останется у кого-либо другого. Это зависит как от типа терминала, так и от используемого шелла. Но для себя все равно можно раскрашивать вывод скриптов, как вам больше нравится.

Обновлено 19.04.2011 09:12