Linux Console Color (the "\033[" way)
2012-12-29 14:23
260 查看
This is a list of codes used in C++ to change the text color:
black - 30
red - 31
green - 32
brown - 33
blue - 34
magenta - 35
cyan - 36
lightgray - 37
Now these are the basic colours.
Usage of "\033[":
This is to handle the console cursor. I do not have a complete
reference so I ask people who know about it to comment with what I do
not have.
* 'm' character at the end of each of the following sentences is used
as a stop character, where the system should stop and parse the \033[
sintax.
\033[0m - is the default color for the console
\033[0;#m - is the color of the text, where # is one of the codes mentioned above
\033[1m - makes text bold
\033[1;#m - makes colored text bold**
\033[2;#m - colors text according to # but a bit darker
\033[4;#m - colors text in # and underlines
\033[7;#m - colors the background according to #
\033[9;#m - colors text and strikes it
\033[A - moves cursor one line above (carfull: it does not erase the previously written line)
\033[B - moves cursor one line under
\033[C - moves cursor one spacing to the right
\033[D - moves cursor one spacing to the left
\033[E - don't know yet
\033[F - don't know yet
\033[2K - erases everything written on line before this.
**(this could be usefull for those who want more colors. The efect given by bold will give a color change effect)
As a short and simple example that colors text and the bold version:
black - 30
red - 31
green - 32
brown - 33
blue - 34
magenta - 35
cyan - 36
lightgray - 37
Now these are the basic colours.
Usage of "\033[":
This is to handle the console cursor. I do not have a complete
reference so I ask people who know about it to comment with what I do
not have.
* 'm' character at the end of each of the following sentences is used
as a stop character, where the system should stop and parse the \033[
sintax.
\033[0m - is the default color for the console
\033[0;#m - is the color of the text, where # is one of the codes mentioned above
\033[1m - makes text bold
\033[1;#m - makes colored text bold**
\033[2;#m - colors text according to # but a bit darker
\033[4;#m - colors text in # and underlines
\033[7;#m - colors the background according to #
\033[9;#m - colors text and strikes it
\033[A - moves cursor one line above (carfull: it does not erase the previously written line)
\033[B - moves cursor one line under
\033[C - moves cursor one spacing to the right
\033[D - moves cursor one spacing to the left
\033[E - don't know yet
\033[F - don't know yet
\033[2K - erases everything written on line before this.
**(this could be usefull for those who want more colors. The efect given by bold will give a color change effect)
As a short and simple example that colors text and the bold version:
#include <stdio.h> int main(int argc, char ** argv) { printf("\033[0mHello world!........................................["); printf("\033[1;32mOK"); printf("\033[0m]\n"); return 0; }
#include <stdio.h> #include <stdlib.h> #include <string.h> /**************************************************************************** the text color: black - 30 red - 31 green - 32 brown - 33 blue - 34 magenta - 35 cyan - 36 lightgray - 37 ****************************************************************************/ #define COLOR_DEFAULT "m" #define COLOR_BLACK ";30m" #define COLOR_RED ";31m" #define COLOR_GREEN ";32m" #define COLOR_BROWN ";33m" #define COLOR_BLUE ";34m" #define COLOR_MAGANTA ";35m" #define COLOR_CYAN ";36m" #define COLOR_LIGHTGRAY ";37m" /**************************************************************************** Usage of "\033[": This is to handle the console cursor. I do not have a complete reference so I ask people who know about it to comment with what I do not have. * 'm' character at the end of each of the following sentences is used as a stop character, where the system should stop and parse the \033[ sintax. \033[0m - is the default color for the console \033[0;#m - is the color of the text, where # is one of the codes mentioned above \033[1m - makes text bold \033[1;#m - makes colored text bold** \033[2;#m - colors text according to # but a bit darker \033[4;#m - colors text in # and underlines \033[7;#m - colors the background according to # \033[9;#m - colors text and strikes it \033[A - moves cursor one line above (carfull: it does not erase the previously written line) \033[B - moves cursor one line under \033[C - moves cursor one spacing to the right \033[D - moves cursor one spacing to the left \033[E - don't know yet \033[F - don't know yet \033[2K - erases everything written on line before this. ****************************************************************************/ #define MODE_0 "0" #define MODE_1 "1" #define MODE_2 "2" #define MODE_3 "3" #define MODE_4 "4" #define MODE_5 "5" #define MODE_6 "6" #define MODE_7 "7" #define MODE_8 "8" #define MODE_9 "9" #define MODE_A "A" #define MODE_B "B" #define MODE_C "C" #define MODE_D "D" #define MODE_E "E" #define MODE_F "F" #define MODE_2K "2K" #define MAX_LINE_LEN 70 #define MAX_DESC_LEN 20 typedef struct strProcessStepsInfo { char szStepDesc[MAX_DESC_LEN]; int nResult; }ProcessStepsInfo; void SetModeDefault() { printf("\033[0m"); } void SetMode(const char *pszMode, const char *pszColor) { printf("\033[%s%s", pszMode, pszColor); } void ShowSpecial(const char *pszOut, const char *pszMode, const char *pszColor) { SetMode(pszMode, pszColor); printf("%s", pszOut); } void ShowProcess(const char *pszOut, int nResult) { // show steps information printf("\n"); int nLen = strlen(pszOut); int nProcess = 0; for (nProcess = 0; nProcess <= 100; nProcess++) { SetMode(MODE_A, ""); if (nProcess>=100) { ShowSpecial(pszOut, MODE_0, COLOR_DEFAULT); } else { ShowSpecial(pszOut, MODE_1, COLOR_DEFAULT); } int nDotCount = 0; for (nDotCount = 0; nDotCount< MAX_LINE_LEN - nLen; nDotCount++) { int nTotal = MAX_LINE_LEN - nLen; int nShowDotCount = nProcess * nTotal / 100; if (nDotCount < nShowDotCount) { printf("."); } else { printf(" "); } } if (nProcess>=100) { if (nResult) { printf(" ["); ShowSpecial("Failed", MODE_1, COLOR_RED); SetModeDefault(); printf("]\n"); } else { printf(" ["); ShowSpecial("OK", MODE_1, COLOR_GREEN); SetModeDefault(); printf("]\n"); } } else { printf(" [%d]\n", nProcess); } system("sleep 0.001"); } } void ShowAllProcess() { // generate steps information int nSteps = 0; const int nMaxSteps = 10; ProcessStepsInfo StepsInfo[nMaxSteps]; for (nSteps = 1; nSteps <= nMaxSteps; nSteps++) { sprintf(StepsInfo[nSteps-1].szStepDesc, "Step %d ", nSteps); StepsInfo[nSteps-1].nResult = rand() % 2; ShowProcess(StepsInfo[nSteps-1].szStepDesc, StepsInfo[nSteps-1].nResult); } } int main(int argc, char **argv) { ShowAllProcess(); SetModeDefault(); return 0; }
相关文章推荐
- solve the error "Errno 5 Input/Output error" on linux system
- How to configure the kernel parameter "console"
- Linux USB "On-The-Go"(OTG) on OMAP H2 软件架构分析(二)
- Convert a console project into a Win32 GUI project or the other way around.
- Linux Virtual Console(5): socat the bridging software
- BASH Shell change the color of my shell prompt under Linux or UNIX
- 错误集锦之 "Unparsed aapt error(s)! Check the console for output".
- Linux USB "On-The-Go"(OTG) on OMAP H2 软件架构分析(三)
- linux printf color颜色 \033[
- 在Linux上安装netcdf4 ,解决"Can't find or link to the hdf5 library"的问题
- Linux下开发warning:"the `gets' function is dangerous and should not be used"
- the host name "linux-xxxx" is invalid
- 在 Linux 虚拟机中手动安装或升级 VMware Tools以及Searching for a valid kernel header path... The path "" is not val
- DreamWorks Animation "Shrek the Third": Linux Feeds an Ogre
- 20150719 Navy blue is my color. You will describe the way people look
- The pros and "conns" of Intel's ConnMan for Linux
- The path "/usr/src/linux/include" is not an existing directory.
- Notes on "Understanding the Linux kernel“
- Solving the "Too many open files" exception in linux
- linux使用yum更新下载时报错PYCURL ERROR 56 - "Failure when receiving data from the peer"