作为标题,有没有办法在expect shell中使用彩色文本? 就像下面的shell脚本echo命令一样。
echo -e "\033[32m Hello World"
答案 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"