-
Shell中打印彩色输出
输出格式如下:
echo "\e[文字背景颜色;文字颜色m"
其中文字背景颜色(40 -- 47)和文字颜色(30 -- 37) 只有30m到47m才具有意义。我们可以利用这个特性来修改终端输出日志的文字颜色。
eg:echo "\e[43;31m 蓝底红字"
-
源码解析
为了简单起见,实现了一个colored阉割版。
测试一下module Colored extend self COLORS = { 'black' => 30, # 黑色 'red' => 31, # 红色 'green' => 32, # 绿色 'yellow' => 33, # 黄色 'blue' => 34, # 蓝色 'magenta' => 35, # 品红 'cyan' => 36, # 青色 'white' => 37 # 白色 } COLORS.each do |color, value| # 添加方法 define_method(color) do colorize(self, :foreground => color) end end def colorize(string, options = {}) # 剔除 nil colored = [color(options[:foreground])].compact * '' # 追加文字 colored << string end # 拼接命令 def color(color_name) "\e[#{COLORS[color_name]}m" end end String.send(:include, Colored)
require './MyColored.rb' puts "我是黑色文字".black puts "我是红色文字".red puts "我是绿色文字".green puts "我是黄色文字".yellow puts "我是蓝色文字".blue puts "我是品红文字".magenta puts "我是青色文字".cyan puts "我是白色文字".white
效果:
image.png
网友评论