【Linux】控制 Bash 输出的格式与颜色

阅读: 评论:0

【Linux】控制 Bash 输出的格式与颜色

【Linux】控制 Bash 输出的格式与颜色

ANSI/VT100 终端可以通过转义序列(escape sequences)控制颜色和格式. 参考 Bash tips.

文章目录

      • 1. Bash 中的转义序列和转义字符
      • 2. 控制格式
      • 3. 8/16 颜色
      • 4. 88/256 颜色
      • 5. 格式与色彩组合控制

1. Bash 中的转义序列和转义字符

转义序列(escape sequences)由转义字符(Escape character,通常为 “^[” or “<Esc>”) 和其它字符组成: “<Esc>[FormatCodem”.

在 Bash 中,“<Esc>” 可由下列符号替换:

  • e
  • 33
  • x1B

例如:

echo -e "e[31mHello Worlde[0m"

echo -e "33[31mHelloe[0m World"

  • -e 选项使得 echo 命令可以解析转义序列.
  • e[0m” 序列表示移除所有样式(格式和颜色). 最好在希望添加样式的内容后面加上,消除对后面字符的影响.
  • ANSI/VT100 转义序列不仅可以在 Bash 中使用,其它任何编程序言都可以使用. 本文主要记录其在 Bash 中的作用.

综上,在 Bash 中使用转义序列控制格式和颜色可以使用如下规则:

”e[控制字符m......e[0m“

2. 控制格式

  • 格式控制代码的兼容性与终端类型有关:有些格式代码在有些终端不起作用.
CodeFormatExample
0取消前面的效果(包括格式与颜色)放于结尾
1粗体(高亮)echo -e "Hellow e[1mHellowe[0m"
2瘦体echo -e "Hellow e[2mHellowe[0m"
3斜体echo -e "Hellow e[3mHellowe[0m"
4下划线echo -e "Hellow e[4mHellowe[0m"
5闪烁echo -e "Hellow e[5mHellowe[0m"
7反色(文字和背景颜色互换)echo -e "Hellow e[7mHellowe[0m"
8隐藏echo -e "Hellow e[8mHellowe[0m"
#!/bin/bashfor f in 1 2 3 4 5 7 ;doecho -e "e[${f}mHello Worlde[0m"
doneexit 0

3. 8/16 颜色

  • 颜色控制代码的兼容性与终端类型有关:有些颜色代码在有些终端下不起作用.
  • 颜色的实际效果与终端类型有关.

 
前景颜色(文字颜色)

CodeColorExample
39Default foreground colorecho -e "Default e[39mDefaulte[0m"
30Blackecho -e "Default e[30mBlacke[0m"
31Redecho -e "Default e[31mRede[0m"
32Greenecho -e "Default e[32mGreene[0m"
33Yellowecho -e "Default e[33mYellowe[0m"|
34Blueecho -e "Default e[34mBluee[0m"
35Magentaecho -e "Default e[35mMagentae[0m"
36Cyanecho -e "Default e[36mCyane[0m"
37Light grayecho -e "Default e[37mLight graye[0m"
90Dark grayecho -e "Default e[90mDark graye[0m"
91Light redecho -e "Default e[91mLight rede[0m"
92Light greenecho -e "Default e[92mLight greene[0m"
93Light yellowecho -e "Default e[93mLight yellowe[0m"
94Light blueecho -e "Default e[94mLight bluee[0m"
95Light magentaecho -e "Default e[95mLight magentae[0m"
96Light cyanecho -e "Default e[96mLight cyane[0m"
97Whiteecho -e "Default e[97mWhitee[0m"

 
背景颜色

CodeColorExample
49Default background colorecho -e "Default e[49mDefaulte[0m"
40Blackecho -e "Default e[40mBlacke[0m"
41Redecho -e "Default e[41mRede[0m"
42Greenecho -e "Default e[42mGreene[0m"
43Yellowecho -e "Default e[43mYellowe[0m"
44Blueecho -e "Default e[44mBluee[0m"
45Magentaecho -e "Default e[45mMagentae[0m"
46Cyanecho -e "Default e[46mCyane[0m"
47Light grayecho -e "Default e[47mLight graye[0m"
100Dark grayecho -e "Default e[100mDark graye[0m"
101Light redecho -e "Default e[101mLight rede[0m"
102Light greenecho -e "Default e[102mLight greene[0m"
103Light yellowecho -e "Default e[103mLight yellowe[0m"
104Light blueecho -e "Default e[104mLight bluee[0m"
105Light magentaecho -e "Default e[105mLight magentae[0m"
106Light cyanecho -e "Default e[106mLight cyane[0m"
107Whiteecho -e "Default e[107mWhitee[0m"

4. 88/256 颜色

  • 支持 256 色彩的仅 vte (GNOME Terminal, XFCE4 Terminal, Nautilus Terminal, Terminator,…).
  • 支持 88 色彩的终端(例如 rxvt)显示的颜色与支持 256 色彩的终端显示的前 88 种颜色不同.

c256.sh

#!/bin/bashecho
for fgbg in 38 48 ; do # Foreground / Backgroundechofor color in {0..255} ; do # Colors# Display the colorprintf "e[${fgbg};5;%sm  %3s  e[0m" $color $color# Display 6 colors per linesif [ $((($color + 1) % 8)) == 0 ] ; thenecho # New linefidoneecho # New line
doneexit 0

运行上面代码可以产生所有 256 色彩(包括前景和背景色)

bash c256.sh

前景颜色(文字颜色),转义序列模式为 e[38;5;Cm ... e[0mC 为下列数字:

例:

echo -e "e[38;5;82mHello e[38;5;198mWorlde[0m"

背景颜色,转义序列模式为 e[38;5;Cm ... e[0mC 为下列数字:

例:

echo -e "e[48;5;82mHelloe[0m e[48;5;198mWorlde[0m"

5. 格式与色彩组合控制

”e[控制字符m......e[0m“

将下面代码用 ; 连接排列放在上面控制字符的部分. 不区分先后,可多种效果叠加.

  • 格式代码:FF∈{1,2,3,4,5,7,8}
  • 前景 8/16 色彩代码:FgC16FgC16∈{30,…,37,39,90,…,97}
  • 背景 8/16 色彩代码:BgC16BgC16∈{40,…,47,49,100,…,107}
  • 前景 88/256 色彩代码:38;5;C256C256∈{0,1,…,255}
  • 背景 88/256 色彩代码:48;5;C256C256∈{0,1,…,255}

 


下划线蓝底红字:

echo -e "e[4;31;44mHello Worlde[0m"


高亮下划线蓝底红字

echo -e "e[1;4;31;44mHello Worlde[0m"


斜体,下划线,文字红色,背景土黄色

echo -e "e[3;4;31;48;5;100mHello Worlde[0m"


斜体,下划线,文字46号色,背景95号色

echo -e "e[3;4;38;5;46;48;5;95mHello Worlde[0m"


本文发布于:2024-02-01 22:11:46,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170679670739749.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:颜色   格式   Linux   Bash
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23