Linux Terminal Color

来源:互联网 发布:三国杀官方淘宝旗舰店 编辑:程序博客网 时间:2024/05/16 05:43

Bash tips:Colors and Formating(ANSI/VT100 Control sequences)

The ANSI/VT100 terminals and terminal emulators are not just able to display black and white text ; they can display colors and formatted texts thanks to escape sequences. Those sequences are composed of the Escape character (often represented by ”^[” or ”<Esc>”) followed by some other characters: ”<Esc>[FormatCodem”.

In Bash, the <Esc> character can be obtained with the following syntaxes:

  • \e
  • \033
  • \x1B

Examples:

Code (Bash)Preview
echo -e "\e[31mHello World\e[0m"
Hello World
echo -e "\033[31mHello\e[0m World"
Hello World

NOTE¹: The -e option of the echo command enable the parsing of the escape sequences.

NOTE²: The ”\e[0m” sequence removes all attributes (formatting and colors). It can be a good idea to add it at the end of each colored text. ;)

NOTE³: The examples in this page are in Bash but the ANSI/VT100 escape sequences can be used in every programming languages.

 Formating

Here are the most commonly supported control sequences for formatting text. Their support depends on the used terminal (see the compatibility list).

Set

CodeDescriptionExamplePreview1Bold/Bright

echo -e "Normal \e[1mBold"
Normal Bold2Dim
echo -e "Normal \e[2mDim"
Normal Dim4Underlined
echo -e "Normal \e[4mUnderlined"
Normal Underlined5Blink 1)
echo -e "Normal \e[5mBlink"
Normal Blink7Reverse (invert the foreground and background colors)
echo -e "Normal \e[7minverted"
Normal inverted8Hidden (usefull for passwords)
echo -e "Normal \e[8mHidden"
Normal Hidden


Reset

CodeDescriptionExamplePreview0Reset all attributes

echo -e "\e[0mNormal Text"
Normal Text21Reset bold/bright
echo -e "Normal \e[1mBold \e[21mNormal"
Normal Bold Normal22Reset dim
echo -e "Normal \e[2mDim \e[22mNormal"
Normal Dim Normal24Reset underlined
echo -e "Normal \e[4mUnderlined \e[24mNormal"
Normal Underlined Normal25Reset blink
echo -e "Normal \e[5mBlink \e[25mNormal"
Normal Blink Normal27Reset reverse
echo -e "Normal \e[7minverted \e[27mNormal"
Normal inverted Normal28Reset hidden
echo -e "Normal \e[8mHidden \e[28mNormal"
Normal Hidden Normal

8/16 Colors

The following colors works with most terminals and terminals emulators 2)see the compatibility list for more informations.

NOTE: The colors can vary depending of the terminal configuration.

Foreground (text)

CodeColorExamplePreview39Default foreground color

echo -e "Default \e[39mDefault"
Default Default30Black
echo -e "Default \e[30mBlack"
Default Black31Red
echo -e "Default \e[31mRed"
Default Red32Green
echo -e "Default \e[32mGreen"
Default Green33Yellow
echo -e "Default \e[33mYellow"
Default Yellow34Blue
echo -e "Default \e[34mBlue"
Default Blue35Magenta
echo -e "Default \e[35mMagenta"
Default Magenta36Cyan
echo -e "Default \e[36mCyan"
Default Cyan37Light gray
echo -e "Default \e[37mLight gray"
Default Light gray90Dark gray
echo -e "Default \e[90mDark gray"
Default Dark gray91Light red
echo -e "Default \e[91mLight red"
Default Light red92Light green
echo -e "Default \e[92mLight green"
Default Light green93Light yellow
echo -e "Default \e[93mLight yellow"
Default Light yellow94Light blue
echo -e "Default \e[94mLight blue"
Default Light blue95Light magenta
echo -e "Default \e[95mLight magenta"
Default Light magenta96Light cyan
echo -e "Default \e[96mLight cyan"
Default Light cyan97White
echo -e "Default \e[97mWhite"
Default White
Backgroud

CodeColorExamplePreview49Default background color

echo -e "Default \e[49mDefault"
Default Default40Black
echo -e "Default \e[40mBlack"
Default Black41Red
echo -e "Default \e[41mRed"
Default Red42Green
echo -e "Default \e[42mGreen"
Default Green43Yellow
echo -e "Default \e[43mYellow"
Default Yellow44Blue
echo -e "Default \e[44mBlue"
Default Blue45Magenta
echo -e "Default \e[45mMagenta"
Default Magenta46Cyan
echo -e "Default \e[46mCyan"
Default Cyan47Light gray
echo -e "Default \e[47mLight gray"
Default Light gray100Dark gray
echo -e "Default \e[100mDark gray"
Default Dark gray101Light red
echo -e "Default \e[101mLight red"
Default Light red102Light green
echo -e "Default \e[102mLight green"
Default Light green103Light yellow
echo -e "Default \e[103mLight yellow"
Default Light yellow104Light blue
echo -e "Default \e[104mLight blue"
Default Light blue105Light magenta
echo -e "Default \e[105mLight magenta"
Default Light magenta106Light cyan
echo -e "Default \e[106mLight cyan"
Default Light cyan107White
echo -e "Default \e[107mWhite"
Default White


88/256 Colors

Some terminals (see the compatibility list) can support 88 or 256 colors. Here are the control sequences that permit you to use them.

NOTE¹: The colors number 256 is only supported by vte (GNOME Terminal, XFCE4 Terminal, Nautilus Terminal, Terminator,…).

NOTE²: The 88-colors terminals (like rxvt) does not have the same color map that the 256-colors terminals. For showing the 88-colors terminals color map, run the ”256-colors.sh” script in a 88-colors terminal.


Frontgroud(text)

For using one of the 256 colors on the foreground (text color), the control sequence is ”<Esc>[38;5;ColorNumberm” where ColorNumber is one of the following colors:

XTerm 256 color list (foreground)

Examples:

Code (Bash)Preview
echo -e "\e[38;5;82mHello \e[38;5;198mWorld"
Hello World
for i in {16..21} {21..16} ; do echo -en "\e[38;5;${i}m#\e[0m" ; done ; echo
Blue gradiantBackgroud

For using one of the 256 colors on the background, the control sequence is ”<Esc>[48;5;ColorNumberm” where ColorNumber is one of the following colors:

XTerm 256 color list (background)

Examples:

Code (Bash)Preview
echo -e "\e[40;38;5;82m Hello \e[30;48;5;82m World \e[0m"
Hello World
for i in {16..21} {21..16} ; do echo -en "\e[48;5;${i}m \e[0m" ; done ; echo
Blue gradiant

Attributes combination

Terminals allow attribute combinations. The attributes must be separated by a semicolon (”;”).

Examples:

DescriptionCode (Bash)PreviewBold + Underlined
echo -e "\e[1;4mBold and Underlined"
Bold and UnderlinedBold + Red forground + Green background
echo -e "\e[1;31;42m Yes it is awful \e[0m"
Yes it is awful


Terminals compatibility

TerminalFormattingColorsCommentBoldDimUnderlinedBlinkinvertHidden81688256aTermok-ok-ok-ok~--Lighter background instead of blink.Eterm~-ok-ok-ok~-okLighter color instead of Bold. Lighter background instead of blink. Can overline a text with the ”^[[6m” sequence.GNOME Terminalokokok-okokokok-okStrikeout with the ”^[[9m” sequence.Guakeokokok-okokokok-okStrikeout with the ”^[[9m” sequence.Konsoleok-okokok-okok-ok Nautilus Terminalokokok-okokokok-okStrikeout with the ”^[[9m” sequence.rxvtok-ok~ok-okokok-If the background is not set to the default color, Blink make it lighter instead of blinking. Support of italic text with the ”^[[3m” sequence.Terminatorokokok-okokokok-okStrikeout with the ”^[[9m” sequence.Tildaok-ok-ok-okok--Underline instead of Dim. Convert 256-colors in 16-colors.XFCE4 Terminalokokok-okokokok-okStrikeout with the ”^[[9m” sequence.XTermok-okokokokokok-ok xvtok-ok-ok----- Linux TTYok---ok-ok~--Specials colors instead of Dim and Underlined. Lighter background instead of Blink, Bug with 88/256 colors.VTE Terminal 3)okokok-okokokok-okStrikeout with the ”^[[9m” sequence.

Notations used in the table:

  • ok”: Supported by the terminal.
  • ~”: Supported in a special way by the terminal.
  • -”: Not supported at all by the terminal.

Attributes combination


The following shell script displays a lot of possible combination of the attributes (but not all, because it uses only one formatting attribute at a time).

#!/bin/bash # This program is free software. It comes without any warranty, to# the extent permitted by applicable law. You can redistribute it# and/or modify it under the terms of the Do What The Fuck You Want#Backgroundfor clbg in {40..47} {100..107} 49 ; do#Foregroundfor clfg in {30..37} {90..97} 39 ; do#Formattingfor attr in 0 1 2 4 5 7 ; do#Print the resultecho -en "\e[${attr};${clbg};${clfg}m ^[${attr};${clbg};${clfg}m \e[0m"doneecho #Newlinedonedone exit 0
Screenshot of the color_and_formatting.sh script


The following script display the 256 colors available on some terminals and terminals emulators like XTerm and GNOME Terminal.

#!/bin/bash # This program is free software. It comes without any warranty, to# the extent permitted by applicable law. You can redistribute it# and/or modify it under the terms of the Do What The Fuck You Want for fgbg in 38 48 ; do #Foreground/Backgroundfor color in {0..256} ; do #Colors#Display the colorecho -en "\e[${fgbg};5;${color}m ${color}\t\e[0m"#Display 10 colors per linesif [ $((($color + 1) % 10)) == 0 ] ; thenecho #New linefidoneecho #New linedone exit 0

Screenshot of the 256-colors.sh script

Links

  • Linux console codes manual (''man console_codes'')
  • XTerm Control Sequences
  • Compilation of all escape sequences
  • ANSI escape code (Wikipedia)
1) Does not work with most of the terminal emulators, works in the tty and XTerm.
2) Some terminals supports only the first 8 colors (30..37 and 40..47), and some others does not support any color at all.
3) GTK Widget used in GNOME Terminal, Nautilus Terminal, XFCE4 Terminal…

0 0
原创粉丝点击