Ori*_*rds 12 ruby windows command-line colors
我有一个命令行程序,它输出日志到屏幕.
我希望错误行以红色显示.是否有一些特殊的字符代码我可以输出将文本颜色切换为红色,然后将其切换回白色?
我正在使用红宝石,但我想这与任何其他语言都是一样的.
就像是:
red = "\0123" # character code
white = "\0223"
print "#{red} ERROR: IT BROKE #{white}"
print "other stuff"
Run Code Online (Sandbox Code Playgroud)
man*_*eru 25
在Windows上,您可以通过三种方式轻松完成:
require 'win32console'
puts "\e[31mHello, World!\e[0m"
Run Code Online (Sandbox Code Playgroud)
现在您可以使用一个名为的小方法扩展String red
require 'win32console'
class String
def red
"\e[31m#{self}\e[0m"
end
end
puts "Hello, World!".red
Run Code Online (Sandbox Code Playgroud)
你也可以像这样扩展String以获得更多颜色:
require 'win32console'
class String
{ :reset => 0,
:bold => 1,
:dark => 2,
:underline => 4,
:blink => 5,
:negative => 7,
:black => 30,
:red => 31,
:green => 32,
:yellow => 33,
:blue => 34,
:magenta => 35,
:cyan => 36,
:white => 37,
}.each do |key, value|
define_method key do
"\e[#{value}m" + self + "\e[0m"
end
end
end
puts "Hello, World!".red
Run Code Online (Sandbox Code Playgroud)
或者,如果您可以安装宝石:
gem install term-ansicolor
Run Code Online (Sandbox Code Playgroud)
在你的程序中:
require 'win32console'
require 'term/ansicolor'
class String
include Term::ANSIColor
end
puts "Hello, World!".red
puts "Hello, World!".blue
puts "Annoy me!".blink.yellow.bold
Run Code Online (Sandbox Code Playgroud)
有关更多信息和可能的用法,请参阅term/ansicolor的文档.
你需要访问[Win32 Console API](http://msdn.microsoft.com/en-us/library/ms682073 ( VS.85%29.aspx).不幸的是,我不知道你是怎么做的来自Ruby.在Perl中,我使用Win32 :: Console模块.Windows控制台不响应ANSI转义码.
根据artur02提到的关于着色Ruby输出的文章,你需要安装并加载win32console gem.