Цвет терминала в Ruby

Есть ли модуль Ruby для раскрашивания строк в терминале Linux?


person gustavgans    schedule 10.07.2009    source источник
comment
Я не буду публиковать ответ, поэтому я не оживляю это, но есть отличный драгоценный камень, называемый цветным. это так же просто, как: "string".red чтобы получить красный текст. Подробнее :D   -  person omninonsense    schedule 04.09.2011
comment
Вы можете проверить это, а также есть варианты сделать это без установки другого Gem: Раскрашенный вывод Ruby   -  person Adriano P    schedule 18.07.2012


Ответы (5)


Я предпочитаю Rainbow gem, так как он также поддерживает Windows, если установлен win32console gem.

Вы можете использовать его следующим образом:

puts "some " + "red".color(:red) + " and " + "blue on yellow".color(:blue).background(:yellow)
person Andy    schedule 30.08.2010
comment
Это великий драгоценный камень. Ухоженный и простой. - person Chris Knadler; 16.11.2012

Эм, хорошо, Google был моим другом :)

http://term-ansicolor.rubyforge.org/

person gustavgans    schedule 10.07.2009
comment
Ссылка битая (время истекло). - person Peter Mortensen; 10.07.2021

Все, что вам нужно сделать, это начать с "\e[##m" и закончить с "\e[0m"

Просто замените ## номером цвета. Примеры:

  • 31:Red
  • 32:Green
  • 33:Yellow
  • 34:Blue
  • 35:Magenta
  • 36:Teal
  • 37:Grey

1:Bold (can be used with any color)

Вот скрипт Ruby, показывающий все цвета терминала. Загрузите его или запустите приведенный ниже код.

def color(index)
  normal = "\e[#{index}m#{index}\e[0m"
  bold = "\e[#{index}m\e[1m#{index}\e[0m"
  "#{normal}  #{bold}  "
end

8.times do|index|
  line = color(index + 1)
  line += color(index + 30)
  line += color(index + 90)
  line += color(index + 40)
  line += color(index + 100)
  puts line
end
person mvndaai    schedule 21.04.2014

Использование методов класса String, таких как:

class String
def black;          "\033[30m#{self}\033[0m" end
def red;            "\033[31m#{self}\033[0m" end
def green;          "\033[32m#{self}\033[0m" end
def brown;          "\033[33m#{self}\033[0m" end
def blue;           "\033[34m#{self}\033[0m" end
def magenta;        "\033[35m#{self}\033[0m" end
def cyan;           "\033[36m#{self}\033[0m" end
def gray;           "\033[37m#{self}\033[0m" end
end

и использование:

puts "This prints green".green
puts "This prints red".red
person TantrajJa    schedule 17.07.2014
comment
Точный и краткий, лучший ответ. - person medik; 16.03.2017

Я большой поклонник Ruby colorize gem, который я недавно скачал. Как только вы загрузите и включите его в свою программу, вы можете добавить

.colorize(:blue)

до конца любой строки. Вы можете использовать большинство цветов, в том числе перед цветом light_, например так:

.colorize(:light_blue)

вы также можете сделать цвета фона, например:

puts "mytext".colorize(:background => :green

раскрашенные подчеркивания, например:

puts "mytext".on_blue.underline

Или используйте HTML-подобные теги для этого.

puts <blue> "text text text" </blue>

Чтобы раскрасить GitHub, перейдите на страницу Раскрасьте GitHub.

Вы можете установить драгоценный камень раскраски, набрав

gem install colorize

в свой терминал, командную строку, что угодно. Затем поместите это в свой файл, прежде чем использовать его.

Например:

require 'rubygems'
require 'colorize'
puts "mytext".colorize(:red)

Но нет:

puts "mytext".colorize(:red)
require 'rubygems'
require 'colorize'

Операторы require должны быть в программе в строках до использования драгоценного камня.

person Community    schedule 30.04.2015