shell中设置文字输出的颜色及字体格式

ANSI控制码

简介

ANSI控制码用于在字符显示系统中控制光标移动和字符色彩等,常用于BBS系统中。

ANSI ESCAPE SEQUENCES又称为VT100系列控制码,国内译为ANSI控制码。顾名思义,需要VT100系列终端的支持,当然现在已经不在局限于VT100了,包括xterm,linux都能很好完成。ANSI控制码依赖终端,不是依赖语言,所以在shell,perl,c里应用均没有问题。

ANSI控制码开始的标志都为ESC[,ESC对应ASCII码表的033(八进制),linux命令echo用-e启用转义,\033来输入ESC,\033[31m即为ESC[31m。

 

格式

echo:-e 用来开启echo中的转义,\e 或 \033 来输出Esc符号

格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"

注意m后面紧跟字符串。

 

ANSI控制码

\33[0m 关闭所有属性 
\33[1m 设置高亮度
\33[4m 下划线 
\33[5m 闪烁 
\33[7m 反显 
\33[8m 消隐 
\33[30m -- \33[37m 设置前景色(字体色)30:黑 31:红     32:绿 33:黄    34:蓝色 35:紫色 36:深绿 37:白色
\33[40m -- \33[47m 设置背景色                  40:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色
\33[nA 光标上移n行 
\33[nB 光标下移n行 
\33[nC 光标右移n行 
\33[nD 光标左移n行 
\33[y;xH设置光标位置 
\33[2J 清屏 
\33[K 清除从光标到行尾的内容 
\33[s 保存光标位置 
\33[u 恢复光标位置 
\33[?25l 隐藏光标 
\33[?25h 显示光标

显示字元属性控制

[n1;n2;......m

Ⅰ设定显示字元的属性状态;

Ⅱ若有两个以上的属性状态要设定则以分号将代码(n1;n2;..)隔开;

Ⅲ除非重新设定,否则原设定之属性一直被保留;

1、Linux中设置文本颜色及背景色

Shell 使用 ANSI 转义码 (ANSI escape codes) 进行颜色输出。转义序列颜色输出表如下

颜色

前景色(字体色)

背景色

黑色 (Black)

30

40

红色 (Red)

31

41

绿色 (Green)

32

42

黄色 (Yellow)

33

43

蓝色 (Blue)

34

44

紫红色 (Magenta)

35

45

青色 (Cyan)

36

46

白色 (White)

37

47

echo -e "\033[颜色值m 文本"
     
     

这句代码中\033[ 作为转义序列的开始,你也可以使用 "\e[" 颜色值处设定前景色值。m 终止转义序列,后面紧跟着就是生效的文本。echo 需要 -e 来开启转义序列。可以用 printf 代替 echo。

printf  "\e[颜色值m 文本\n"
     
     

2、shell中设置字体颜色及背景实例

例1:打印蓝色文本(两种方法)


     
     
  1. echo -e "\033[34m Hello World"
  2. printf "\e[34m Hello World\n"

但是这样执行之后,会使得其后面的文本输出都是蓝色,连命令提示符都是蓝色。要使其返回颜色使用 \033[0m。

使用不同的转义序列组合来达到不同的效果,如下面加上背景色的显示:

echo -e "\033[前景色值;背景色值m 文本\033[0m"
     
     

前景色值和背景色值使用分号间隔,不分先后,因为两种值的颜色范围不一样,比如 黑色 30 40 。另外分开写同样生效,如 \033[44m\033[32m

3、Linux中设置字体属性(加粗、闪烁、下划线等)

转义序列还可以设置文本在显示屏上显示的方式,如是否加粗等,如下表:

ANSI 码

含义

0

常规文本

1

粗体文本

4

含下划线文本

5

闪烁文本

7

反色(补色)文本

加粗属性合并后,有些变化。如下表:

关闭加粗

颜色

开启加粗

颜色

0;30

黑 (Black)

1;30

深灰 (Dark Gray)

0;31

红 (Red)

1;31

深红 (Dark Red)

0;32

绿 (Green)

1;32

深绿 (Dark Green)

0;33

黄 (Yellow)

1;33

亮黄 (Yellow)

0;34

蓝 (Blue)

1;34

深蓝 (Dark Blue)

0;35

紫红 (Magenta)

1;35

暗紫红 (Dark Magenta)

0;36

青 (Cyan)

1;36

深青 (Dark Cyan)

0;37

浅   灰(White)

1;37

白 (White)

特效可以叠加,需要使用“;”隔开,例如:闪烁+下划线+白底色+黑字为   \033[5;4;47;30m闪烁+下划线+白底色+黑字为\033[0m

4、shell脚本实现各种字体颜色及背景设置


     
     
  1. #!/bin/bash
  2. #
  3. #下面是字体输出颜色及终端格式控制
  4. #字体色范围:30-37
  5. echo -e "\033[30m 黑色字 \033[0m"
  6. echo -e "\033[31m 红色字 \033[0m"
  7. echo -e "\033[32m 绿色字 \033[0m"
  8. echo -e "\033[33m ×××字 \033[0m"
  9. echo -e "\033[34m 蓝色字 \033[0m"
  10. echo -e "\033[35m 紫色字 \033[0m"
  11. echo -e "\033[36m 天蓝字 \033[0m"
  12. echo -e "\033[37m 白色字 \033[0m"
  13. #字背景颜色范围:40-47
  14. echo -e "\033[40;37m 黑底白字 \033[0m"
  15. echo -e "\033[41;30m 红底黑字 \033[0m"
  16. echo -e "\033[42;34m 绿底蓝字 \033[0m"
  17. echo -e "\033[43;34m 黄底蓝字 \033[0m"
  18. echo -e "\033[44;30m 蓝底黑字 \033[0m"
  19. echo -e "\033[45;30m 紫底黑字 \033[0m"
  20. echo -e "\033[46;30m 天蓝底黑字 \033[0m"
  21. echo -e "\033[47;34m 白底蓝字 \033[0m"
  22. #控制选项说明
  23. #\033[0m 关闭所有属性
  24. #\033[1m 设置高亮度
  25. #\033[4m 下划线
  26. echo -e "\033[4;31m 下划线红字 \033[0m"
  27. #闪烁
  28. echo -e "\033[5;34m 红字在闪烁 \033[0m"
  29. #反影
  30. echo -e "\033[8m 消隐 \033[0m "
  31. #\033[30m-\033[37m 设置前景色
  32. #\033[40m-\033[47m 设置背景色
  33. #\033[nA光标上移n行
  34. #\033[nB光标下移n行
  35. echo -e "\033[4A 光标上移4行 \033[0m"
  36. #\033[nC光标右移n行
  37. #\033[nD光标左移n行
  38. #\033[y;xH设置光标位置
  39. #\033[2J清屏
  40. #\033[K清除从光标到行尾的内容
  41. echo -e "\033[K 清除光标到行尾的内容 \033[0m"
  42. #\033[s 保存光标位置
  43. #\033[u 恢复光标位置
  44. #\033[?25| 隐藏光标
  45. #\033[?25h 显示光标
  46. echo -e "\033[?25l 隐藏光标 \033[0m"
  47. echo -e "\033[?25h 显示光标 \033[0m"

5、使用echo让字符串显示不同颜色

下面的命令可写入脚本执行,根据实际情况替换需要改变颜色的文本。


     
     
  1. echo -e "\033[30m 黑色字 可替换部分 \033[0m"
  2. echo -e "\033[31m 红色字 可替换部分 \033[0m"
  3. echo -e "\033[32m 绿色字 可替换部分 \033[0m"
  4. echo -e "\033[33m ×××字 可替换部分 \033[0m"
  5. echo -e "\033[34m 蓝色字 可替换部分 \033[0m"
  6. echo -e "\033[35m 紫色字 可替换部分 \033[0m"
  7. echo -e "\033[36m 天蓝字 可替换部分 \033[0m"
  8. echo -e "\033[37m 白色字 可替换部分 \033[0m"

6、通过定义变量的方式给字体加颜色


     
     
  1. #!/bin/bash
  2. #通过变量给字体加颜色
  3. RED_COLOR= '\E[1;31m'
  4. GREEN_COLOR= '\E[1;32m'
  5. YELLOW_COLOR= '\E[1;33m'
  6. BLUE_COLOR= '\E[1;34m'
  7. PINK_COLOR= '\E[1;35m'
  8. RES= '\E[0m'
  9. echo -e "${RED_COLOR}=====红色可替换部分=====${RES}"
  10. echo -e "${GREEN_COLOR}=====绿色可替换部分=====${RES}"
  11. echo -e "${YELLOW_COLOR}=====×××可替换部分=====${RES}"
  12. echo -e "${BLUE_COLOR}=====蓝色可替换部分=====${RES}"
  13. echo -e "${PINK}=====粉色可替换部分=====${RES}"

7、开发一个给输出内容加颜色的函数(也可以加背景颜色)

在脚本中传2个参数,给指定内容(第一个参数),加指定颜色(第二个参数)


     
     
  1. #!/bin/bash
  2. #通过变量给字体加颜色
  3. #这里定义一个COLOR_1()函数,后面如果想改变字体颜色直接调用即可
  4. COLOR_1(){
  5. RED_COLOR= '\E[1;31m'
  6. GREEN_COLOR= '\E[1;32m'
  7. YELLOW_COLOR= '\E[1;33m'
  8. BLUE_COLOR= '\E[1;34m'
  9. PINK_COLOR= '\E[1;35m'
  10. RES= '\E[0m'
  11. #这里判断传入的参数是否不等于2个,如果不等于2个就提示并退出
  12. if [ $# -ne 2 ]; then
  13. echo "Usage $0 content {red|yellow|blue|green|pink}"
  14. exit
  15. fi
  16. case "$2" in
  17. red|RED)
  18. echo -e "${RED_COLOR}$1${RES}"
  19. ;;
  20. yellow|YELLOW)
  21. echo -e "${YELLOW_COLOR}$1${RES}"
  22. ;;
  23. green|GREEN)
  24. echo -e "${GREEN_COLOR}$1${RES}"
  25. ;;
  26. blue|BLUE)
  27. echo -e "${BLUE_COLOR}$1${RES}"
  28. ;;
  29. pink|PINK)
  30. echo -e "${PINK_COLOR}$1${RES}"
  31. ;;
  32. *)
  33. echo -e "请输入指定的颜色代码:{red|yellow|blue|green|pink}"
  34. esac
  35. }
  36. COLOR_1 "程序安装报错!" red
  37. COLOR_1 "程序安装成功!" green
  38. COLOR_1 "输出相关注释信息" blue

 转自:

https://blog.51cto.com/longlei/2357898

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐