【发布时间】:2012-10-04 11:22:51
【问题描述】:
作为标题,有什么方法可以在expect shell 中使用彩色文本吗? 就像下面的 shell script echo 命令一样。
echo -e "\033[32m Hello World"
【问题讨论】:
作为标题,有什么方法可以在expect shell 中使用彩色文本吗? 就像下面的 shell script echo 命令一样。
echo -e "\033[32m Hello World"
【问题讨论】:
我已经为这个问题的答案苦苦挣扎了很长一段时间,现在我想我终于得到了答案。
它的工作原理是使用033 发送[ 发送以分号分隔的ANSI 转义码,但是由于[ 是一个特殊字符,因此还需要使用a 转义反斜杠。然后,您可以继续发送 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"
【讨论】: