期待壳的彩色文本

jae*_*ong 6 colors expect puts

作为标题,有没有办法在expect shell中使用彩色文本?就像下面的shell脚本echo命令一样.

echo -e "\033[32m Hello World"
Run Code Online (Sandbox Code Playgroud)

fil*_*ter 6

我已经忍受了这个问题的答案很长一段时间了,现在我想我终于得到了答案.

它是如何工作的,用于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)