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

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

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:打印蓝色文本(两种方法)

echo -e "\033[34m Hello World"

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脚本实现各种字体颜色及背景设置

#!/bin/bash 

#下面是字体输出颜色及终端格式控制 

#字体色范围:30-37 

echo -e "\033[30m 黑色字 \033[0m" 

echo -e "\033[31m 红色字 \033[0m" 

echo -e "\033[32m 绿色字 \033[0m" 

echo -e "\033[33m ×××字 \033[0m" 

echo -e "\033[34m 蓝色字 \033[0m" 

echo -e "\033[35m 紫色字 \033[0m" 

echo -e "\033[36m 天蓝字 \033[0m" 

echo -e "\033[37m 白色字 \033[0m" 

#字背景颜色范围:40-47 

echo -e "\033[40;37m 黑底白字 \033[0m" 

echo -e "\033[41;30m 红底黑字 \033[0m" 

echo -e "\033[42;34m 绿底蓝字 \033[0m" 

echo -e "\033[43;34m 黄底蓝字 \033[0m" 

echo -e "\033[44;30m 蓝底黑字 \033[0m" 

echo -e "\033[45;30m 紫底黑字 \033[0m" 

echo -e "\033[46;30m 天蓝底黑字 \033[0m" 

echo -e "\033[47;34m 白底蓝字 \033[0m" 

 

#控制选项说明 

#\033[0m 关闭所有属性 

#\033[1m 设置高亮度 

#\033[4m 下划线 

echo -e "\033[4;31m 下划线红字 \033[0m" 

#闪烁 

echo -e "\033[5;34m 红字在闪烁 \033[0m" 

#反影 

echo -e "\033[8m 消隐 \033[0m " 

 

#\033[30m-\033[37m 设置前景色 

#\033[40m-\033[47m 设置背景色 

#\033[nA光标上移n行 

#\033[nB光标下移n行 

echo -e "\033[4A 光标上移4行 \033[0m" 

#\033[nC光标右移n行 

#\033[nD光标左移n行 

#\033[y;xH设置光标位置 

#\033[2J清屏 

#\033[K清除从光标到行尾的内容 

echo -e "\033[K 清除光标到行尾的内容 \033[0m" 

#\033[s 保存光标位置 

#\033[u 恢复光标位置 

#\033[?25| 隐藏光标 

#\033[?25h 显示光标 

echo -e "\033[?25l 隐藏光标 \033[0m" 

echo -e "\033[?25h 显示光标 \033[0m"

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

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

echo -e "\033[30m 黑色字 可替换部分 \033[0m"

echo -e "\033[31m 红色字 可替换部分 \033[0m"

echo -e "\033[32m 绿色字 可替换部分 \033[0m"

echo -e "\033[33m ×××字 可替换部分 \033[0m"

echo -e "\033[34m 蓝色字 可替换部分 \033[0m"

echo -e "\033[35m 紫色字 可替换部分 \033[0m"

echo -e "\033[36m 天蓝字 可替换部分 \033[0m"

echo -e "\033[37m 白色字 可替换部分 \033[0m"

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

#!/bin/bash

#通过变量给字体加颜色

RED_COLOR='\E[1;31m'

GREEN_COLOR='\E[1;32m'

YELLOW_COLOR='\E[1;33m'

BLUE_COLOR='\E[1;34m'

PINK_COLOR='\E[1;35m'

RES='\E[0m'

echo -e "${RED_COLOR}=====红色可替换部分=====${RES}"

echo -e "${GREEN_COLOR}=====绿色可替换部分=====${RES}"

echo -e "${YELLOW_COLOR}=====×××可替换部分=====${RES}"

echo -e "${BLUE_COLOR}=====蓝色可替换部分=====${RES}"

echo -e "${PINK}=====粉色可替换部分=====${RES}"

 

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

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

#!/bin/bash

#通过变量给字体加颜色

#这里定义一个COLOR_1()函数,后面如果想改变字体颜色直接调用即可

COLOR_1(){

RED_COLOR='\E[1;31m'

GREEN_COLOR='\E[1;32m'

YELLOW_COLOR='\E[1;33m'

BLUE_COLOR='\E[1;34m'

PINK_COLOR='\E[1;35m'

RES='\E[0m'

#这里判断传入的参数是否不等于2个,如果不等于2个就提示并退出

if [ $# -ne 2 ];then

    echo "Usage $0 content {red|yellow|blue|green|pink}"

    exit

fi

 

case "$2" in

   red|RED)

        echo -e "${RED_COLOR}$1${RES}"

        ;;

   yellow|YELLOW)

        echo -e "${YELLOW_COLOR}$1${RES}"

        ;;

   green|GREEN)

        echo -e "${GREEN_COLOR}$1${RES}"

        ;;

   blue|BLUE)

        echo -e "${BLUE_COLOR}$1${RES}"

        ;;

   pink|PINK)

        echo -e "${PINK_COLOR}$1${RES}"

        ;;

         *)

        echo -e "请输入指定的颜色代码:{red|yellow|blue|green|pink}"

esac

}

COLOR_1 "程序安装报错!" red

COLOR_1 "程序安装成功!" green

COLOR_1 "输出相关注释信息" blue

 


上一篇:linux运维、架构之路-shell编程(二)


下一篇:oracle基础文件操作