Цветные тексты в ожидаемой оболочке

Как заголовок, есть ли способ использовать цветные тексты в ожидаемой оболочке? Как команда сценария оболочки echo ниже.

echo -e "\033[32m Hello World"

1 ответ

Решение

Я довольно долго мучился с ответом на этот вопрос, и теперь я думаю, что наконец получил ответ.

Как это работает, это использовать 033 отправить символ , а затем [ отправлять управляющие коды ANSI через точку с запятой, однако [ это специальный символ, его также нужно экранировать обратной косой чертой. Затем вы можете продолжить отправлять последовательности ANSI и разделять их m,

Пример ANSI разрывных последовательностей

  • 0 Сбросить / Отключить все атрибуты

  • 1 Жирный или повышенной интенсивности

  • 4 Подчеркивание: Single

  • 30 установить цвет текста черный

  • 31 Установить цвет текста Красный

  • 32 Установить цвет текста Зеленый

Полный список можно найти здесь: http://en.wikipedia.org/wiki/ANSI_escape_code

Пример:

puts "\033\[01;31m" # This will turn text red
puts "~~~This text is red and bold\n" 
puts "\033\[0;32m" # This will turn text green
puts "This text is green and bold switched off\n"

Однако это не похоже на работу с -nonewline вариант, который немного раздражает. Однако команда send_user, кажется, обрабатывает вещи намного лучше и под контролем намного лучше:

send_user "\033\[01;31mRed bold \033\[0;32mGreen again"

Вы можете даже комбинировать это с переменными, чтобы сделать вывод более читабельным:

set green "\033\[0;32;40m"
set red "\033\[1;31m"
send_user "${red}Red bold ${green}Green again"
Другие вопросы по тегам