我有一个命令行程序,它输出日志到屏幕.
我希望错误行以红色显示.是否有一些特殊的字符代码我可以输出将文本颜色切换为红色,然后将其切换回白色?
我正在使用红宝石,但我想这与任何其他语言都是一样的.
就像是:
red = "\0123" # character code white = "\0223" print "#{red} ERROR: IT BROKE #{white}" print "other stuff"
manveru.. 25
在Windows上,您可以通过三种方式轻松完成:
require 'win32console' puts "\e[31mHello, World!\e[0m"
现在您可以使用一个名为的小方法扩展String red
require 'win32console' class String def red "\e[31m#{self}\e[0m" end end puts "Hello, World!".red
你也可以像这样扩展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
或者,如果您可以安装宝石:
gem install term-ansicolor
在你的程序中:
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
有关更多信息和可能的用法,请参阅term/ansicolor的文档.
在Windows上,您可以通过三种方式轻松完成:
require 'win32console' puts "\e[31mHello, World!\e[0m"
现在您可以使用一个名为的小方法扩展String red
require 'win32console' class String def red "\e[31m#{self}\e[0m" end end puts "Hello, World!".red
你也可以像这样扩展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
或者,如果您可以安装宝石:
gem install term-ansicolor
在你的程序中:
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
有关更多信息和可能的用法,请参阅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.