您的位置:首页 > 运维架构 > Linux

Linux技巧: Linux终端打印如何设置不同的颜色及显示方式

2017-09-14 11:12 627 查看
     在Linux终端下调试程序时,有时需要输出大量信息。而从这些大量的信息中,我们往往很难捕获我们需要的信息。若能控制字体的颜色和显示方式,可使输出信息对比鲜明显示,便于调试时观察数据。
     终端的字符颜色由转义序列(Escape Sequence)控制,是文本模式下的系统显示功能,与具体语言无关。
     转义序列以控制字符'ESC'开头。该字符的ASCII码十进制表示为27,十六进制表示为0x1B,八进制表示为033。多数转义序列超过两个字符,故通常以'ESC'和左括号'['开头。该起始序列称为控制序列引导符(CSI,Control Sequence Intro),通常由'\033['或'\e['代替。
     通过转义序列设置终端显示属性时,可采用以下格式:

                      \033[ Param {;Param;...}m
                      或
                      \e[ Param {;Param;...}m

         其中,
        '\033['或'\e['引导转义序列,
        'm'表示设置属性并结束转义序列。Param为属性值,{...}表示可选(多个参数之间用分号隔开,与顺序无关)。
     例如,在Linux Shell中执行下述命令:
   


     即设置输出为红色字体(31),浅绿色背景(46)。选项'-e'为echo命令激活特殊字符的解析器。
     注意,转义序列可被控制字符'CAN'(Cancel )和'SUB'(Substitute)中断。
     转义序列相关的常用参数如下(通过man console_codes命令可查看更多的参数描述):
     显示:0(默认)、1(粗体/高亮)、22(非粗体)、4(单条下划线)、24(无下划线)、5(闪烁)、25(无闪烁)、7(反显、翻转前景色和背景色)、27(无反显)
     颜色:0(黑)、1(红)、2(绿)、 3(黄)、4(蓝)、5(洋红)、6(青)、7(白)
     前景色为30+颜色值,如31表示前景色为红色;
   
 背景色为40+颜色值,如41表示背景色为红色。
     调色效果如下图所示:
     


     因此,通过转义序列设置终端显示属性时,常见格式为:
\033[显示方式;前景色;背景色m输出字符串\033[0m

\e[显示方式;前景色;背景色m输出字符串\033[0m
     其中 ,'\033[0m'用于恢复默认的终端输出属性,否则会影响后续的输出。
     此外,还有一些ANSI控制码,如:nA (光标上移n行 )、nB(光标下移n行 )、nC(光标右移n行 )、nD (光标左移n行 )、2J(清屏)、K(清除从光标到行尾的内容)、s(保存光标位置)、u(恢复光标位置)、?25l(隐藏光标)、?25l(显示光标)。
下面是我使用python写的一个简单的监控svn上代码是否被revert的简易脚本。其中效果如下:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: