4

我正在编写一个将在 CLI 中运行的小型 Rub​​y 脚本。

为了改进界面,我需要为我输出的一些元素添加颜色/粗体。

那可行吗?如果是这样,我几乎可以肯定这是,如何?

4

3 回答 3

13

在许多终端(但不是 Windows)上,您可以使用这样的序列:"\e[#{code}m",其中代码基于这些表。如果使用多个代码,则必须用分号分隔。主要代码如下:

强度:

1  Bold Intensity
4  Underline
5  Slow blink
6  Fast blink
22 Normal Intensity

颜色:

Foreground 3X
Background 4X

Where X is:
-----------
0 Black
1 Red
2 Green
3 Yellow
4 Blue
5 Magenta
6 Cyan
7 White

因此,例如,对于蓝色背景上缓慢闪烁的粗体绿色文本,您可以使用"\e[5;1;32;44mWOW!\e[0m". 将\e[0m所有内容重置为终端默认值。

于 2009-05-29T17:51:31.777 回答
8

有一个 gemrainbow可以很容易地设置终端输出的样式。

sudo gem install rainbow

安装后,您可以执行以下操作:

puts 'some text'.underline
于 2009-05-29T18:24:57.793 回答
0

亲爱的鲁比人! 我更喜欢在 Ruby 中找到默认的集成支持。在这里我找到了一些,无需安装任何 gem 就可以工作:

def red(mytext); "\e[31m#{mytext}\e[0m"; end
def light_red(mytext); "\e[1;31m#{mytext}\e[0m"; end
def green(mytext); "\e[32m#{mytext}\e[0m"; end
def light_green(mytext); "\e[1;32m#{mytext}\e[0m"; end
def yellow(mytext); "\e[1;33m#{mytext}\e[0m"; end
def blue(mytext); "\e[34m#{mytext}\e[0m"; end
def light_blue(mytext); "\e[1;34m#{mytext}\e[0m"; end

puts red("hello world. I don't need no color.")
puts light_red("hello world. I don't need no color.")
puts green("hello world. I don't need no color.")
puts light_green("hello world. I don't need no color.")
puts blue("hello world. I don't need no color.")
puts light_blue("hello world. I don't need no color.")
puts yellow("hello world. I don't need no color.")

它适用于putsprint

于 2021-11-18T15:41:14.100 回答