【问题标题】:color texts at expect shell期望外壳中的彩色文本
【发布时间】:2012-10-04 11:22:51
【问题描述】:

作为标题,有什么方法可以在expect shell 中使用彩色文本吗? 就像下面的 shell script echo 命令一样。

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

【问题讨论】:

    标签: colors expect puts


    【解决方案1】:

    我已经为这个问题的答案苦苦挣扎了很长一段时间,现在我想我终于得到了答案。

    它的工作原理是使用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"
    

    【讨论】:

    • 救生员 :),这非常好。对于想要重置的,我创建了一个普通变量并放置,设置普通“\033[0;0m”
    猜你喜欢
    • 2013-08-01
    • 2011-09-26
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多