Цветные тексты в ожидаемой оболочке
Как заголовок, есть ли способ использовать цветные тексты в ожидаемой оболочке? Как команда сценария оболочки 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"