我已经忍受了这个问题的答案很长一段时间了,现在我想我终于得到了答案.
它是如何工作的,用于033发送<ESC>字符,然后[发送由分号分隔的ANSI转义码,但是作为[一个特殊字符,它也需要用反斜杠进行转义.然后,您可以继续发送ANSI序列并使用m.
示例ANSI中断序列
0重置/正常关闭所有属性
1大胆或增加强度
4下划线:单一
30设置文字颜色黑色
31将文字颜色设置为红色
32将文本颜色设置为绿色
完整列表可在此处找到:http: //en.wikipedia.org/wiki/ANSI_escape_code
例:
puts "\033\[01;31m" # This will turn text red
puts "~~~This text is red and bold\n"
puts "\033\[0;32m" # This will turn text green
puts "This text is green and bold switched off\n"
Run Code Online (Sandbox Code Playgroud)
但是它似乎不适用于-nonewline选项,这有点令人讨厌.然而,send_user命令似乎处理得更好,并且控制得更好:
send_user "\033\[01;31mRed bold \033\[0;32mGreen again"
Run Code Online (Sandbox Code Playgroud)
您甚至可以将它与变量结合起来,使输出更具可读性:
set green "\033\[0;32;40m"
set red "\033\[1;31m"
send_user "${red}Red bold ${green}Green again"
Run Code Online (Sandbox Code Playgroud)