【发布时间】:2013-04-05 04:17:39
【问题描述】:
我想暂时更改终端输出颜色,运行 Ruby 脚本,以便标准输出以更改后的颜色打印,“休眠”一秒钟,然后将其更改回来。我知道如何设置颜色,比如提示:
PS1="\e[0;36m[\w] \e[m "
我想我需要编写一个 Bash 函数来执行此操作。那会是什么样子?
【问题讨论】:
我想暂时更改终端输出颜色,运行 Ruby 脚本,以便标准输出以更改后的颜色打印,“休眠”一秒钟,然后将其更改回来。我知道如何设置颜色,比如提示:
PS1="\e[0;36m[\w] \e[m "
我想我需要编写一个 Bash 函数来执行此操作。那会是什么样子?
【问题讨论】:
这是一个显示所有终端颜色的 Ruby 脚本。 Download it 或运行以下代码。
def color(index)
normal = "\e[#{index}m#{index}\e[0m"
bold = "\e[#{index}m\e[1m#{index}\e[0m"
"#{normal} #{bold} "
end
8.times do|index|
line = color(index + 1)
line += color(index + 30)
line += color(index + 90)
line += color(index + 40)
line += color(index + 100)
puts line
end
【讨论】:
您可以在 Ruby 中执行此操作(假设您在 Linux 上;Windows 需要一个库/gem,我目前不记得其名称)使用您在 bash 中使用的常规代码,例如
puts "\e[31m etc Your text here."
重置为正常显示:
puts "\e[0m"
根据口味调整。
【讨论】:
puts(或print)"\e[31m",并且终端文本颜色将保持红色(或您选择的任何颜色),直到您打印另一个ANSI颜色代码。跨度>
您还可以使用 Term Ansicolor gem 从运行脚本中对其进行更改。
【讨论】:
也可以使用Colorize gem。
安装:
sudo gem install colorize
用法:
require 'colorize'
puts "I am now red.".red
puts "I am now blue.".green
puts "I am a super coder".yellow
这个答案是从 How can I use Ruby to colorize the text output to a terminal? 复制而来的。
【讨论】: