期待壳的彩色文本

时间:2012-10-14 05:10:07

标签: colors expect puts

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

echo -e "\033[32m Hello World"

1 个答案:

答案 0 :(得分: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"

然而,它似乎不适用于-nonewline选项,这有点令人讨厌。然而,send_user命令似乎处理得更好,并且控制得更好:

send_user "\033\[01;31mRed bold \033\[0;32mGreen again"

您甚至可以将其与变量结合使用,以使输出更具可读性:

set green "\033\[0;32;40m"
set red "\033\[1;31m"
send_user "${red}Red bold ${green}Green again"