Date:2015.5.15 Author:杨正 QQ:1209758756yz2012ww@gmail.com
在Linux环境下进行软件开发时,调试是经常做的事情,为了让调试信息更加清晰方便,这里讲解如何输出带有自定义的颜色字体,比如可以自定义输出颜色为红,绿,蓝等,与其他打印信息区分开来。
首先讲解在shell脚本中的应用:
在shell中使用echo命令输出带颜色的文本
名称
echo - 显示一行文本
概要
echo [选项]... [字符串]...
描述
向标准输出输出字符串。
-n 不输出换行符
-e 打开反斜杠ESC转义
-E 取消反斜杠ESC转义 (默认)
--help 显示帮助
--version 显示版本
注意要输出颜色必须有 -e 选项。
然后说一下重点:ANSI控制码在输出有颜色文本方面应用。
-e 用来开启echo中的转义
\e 或 \033 来输出Esc符号
设置颜色的格式: \e[背景色;前景色;高亮m
\033[背景色;前景色;高亮m
恢复默认为 \e[0m ,如果不加这个,那么后面的输出将一直保持当前的颜色。
其中背景色可以被以下数字替换
第一个参数:
0 透明(使用终端颜色),1 高亮 40 黑, 41 红, 42 绿, 43 黄, 44 蓝 45 紫, 46 青
绿, 47白(灰)
第二个参数:
前景色(也就是文本的颜色)可以被以下数字替换
30 黑 31 红, 32 绿, 33 黄, 34 蓝, 35 紫, 36 青绿, 37 白(灰)
第三个参数:
高亮是1,不高亮是0
第四个参数为m:
注意m后面紧跟字符串。
实例:
1,输出红色字体 abc,背景色不变,以下三个效果一样
echo -e ‘\033[0;31;1m abc \033[0m‘
echo -e "\e[1;31m abc \e[0m"
echo -e "\e[0;31;1m abc \e[0m"
2,输出黄色字体 abc,红色背景色,以下三个效果一样
echo -e ‘\033[41;33;1m abc \033[0m‘
echo -e "\e[41;33m abc \e[0m"
echo -e "\e[41;33;1m abc \e[0m"
30 黑 31 红, 32 绿, 33 黄, 34 蓝, 35 紫, 36 青绿, 37 白(灰)
echo -e "\e[1;30m skyapp exist \e[0m"//黑色
echo -e "\e[1;31m skyapp exist \e[0m" //红色
echo -e "\e[1;32m skyapp exist \e[0m" //绿色
echo -e "\e[1;33m skyapp exist \e[0m" //黄色
echo -e "\e[1;34m skyapp exist \e[0m" //蓝色
echo -e "\e[1;35m skyapp exist \e[0m" //紫色
echo -e "\e[1;36m skyapp exist \e[0m" //青绿
echo -e "\e[1;37m skyapp exist \e[0m" //白(灰)
嵌入式中用一下方法:
echo -e "^[[1;30m skyapp exist ^[[0m"//黑色
echo -e "^[[1;31m skyapp exist ^[[0m"//红色
echo -e "^[[1;32m skyapp exist ^[[0m"//绿色
echo -e "^[[1;33m skyapp exist ^[[0m"//黄色
echo -e "^[[1;34m skyapp exist ^[[0m"//蓝色
echo -e "^[[1;35m skyapp exist ^[[0m"//紫色
echo -e "^[[1;36m skyapp exist ^[[0m"//青绿
echo -e "^[[1;37m skyapp exist ^[[0m" //白(灰)
注意:^[ 的输入方法是ctrl+v键,再按ESC键
最后在C语言中的使用:
[kernel@localhosttest]$ cat color.c
/*********************************************************************************
* Copyright: (C) 2015 YangZheng<yz2012ww@gmail.com>
* All rights reserved.
*
* Filename: color.c
* Description: This file
*
* Version: 1.0.0(04/14/2015~)
* Author: Yang Zheng<yz2012ww@gmail.com>
* ChangeLog: 1, Release initialversion on "04/14/2015 12:05:38 PM"
*
********************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#defineNONE "\033[m"
#defineRED "\033[0;32;31m"
#defineLIGHT_RED "\033[1;31m"
#defineGREEN "\033[0;32;32m"
#defineLIGHT_GREEN "\033[1;32m"
#defineBLUE "\033[0;32;34m"
#defineLIGHT_BLUE "\033[1;34m"
#defineDARY_GRAY "\033[1;30m"
#defineCYAN "\033[0;36m"
#defineLIGHT_CYAN "\033[1;36m"
#definePURPLE "\033[0;35m"
#defineLIGHT_PURPLE "\033[1;35m"
#defineBROWN "\033[0;33m"
#defineYELLOW "\033[1;33m"
#defineLIGHT_GRAY "\033[0;37m"
#defineWHITE "\033[1;37m"
intmain()
{
printf(CYAN "Current function is%s.\n", __FUNCTION__);
printf(GREEN "Current line is%d.\n" NONE, __LINE__);
return EXIT_SUCCESS;
}
原文地址:http://blog.csdn.net/yangzheng_yz/article/details/45821577