-
Shell中打印彩色輸出
輸出格式如下:
echo "\e[文字背景顏色;文字顏色m"
其中文字背景顏色(40 -- 47)和文字顏色(30 -- 37) 只有30m到47m才具有意義。我們可以利用這個(gè)特性來修改終端輸出日志的文字顏色。
eg:echo "\e[43;31m 藍(lán)底紅字"

image.png
-
源碼解析
為了簡(jiǎn)單起見,實(shí)現(xiàn)了一個(gè)colored閹割版。
測(cè)試一下module Colored extend self COLORS = { 'black' => 30, # 黑色 'red' => 31, # 紅色 'green' => 32, # 綠色 'yellow' => 33, # 黃色 'blue' => 34, # 藍(lán)色 '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 "我是藍(lán)色文字".blue puts "我是品紅文字".magenta puts "我是青色文字".cyan puts "我是白色文字".white效果:
image.png
