Loading

shell下实现echo彩色输出

需求

编写脚本有大量输出信息,希望通过彩色文字突出关键内容。

实现

网上很多方法通过echo转义字符实现彩色输出,代码如下

echo -e "\e[1;31m This is red text \e[0m"

过于晦涩,考虑更简洁的方法:调用tput命令

tput 命令会利用 terminfo 数据库中的信息,来控制和更改我们的终端,
比如控制光标、更改文本属性、控制屏幕,以及为文本涂色。

其中,为文本涂色的方法是:

  • tput setab:设置背景色;
  • tput setaf: 设置前景色。

其中颜色的定义如下

数值 0 1 2 3 4 5 6 7
颜色 黑色 红色 绿色 黄色 蓝色 品红 青色 白色

这里给一个展示脚本:

#!/bin/bash
K=`tput setaf 0`
R=`tput setaf 1`
G=`tput setaf 2`
Y=`tput setaf 3`
B=`tput setaf 4`
M=`tput setaf 5`
C=`tput setaf 6`
W=`tput setaf 7`
# Use Q to revert color
Q=`tput sgr0`

echo "${R}red ${G}green ${B}blue ${Q}"
echo "${C}cyan ${M}magenta ${Y}yellow ${K}black ${Q}"

效果

参考

bash - How to change the output color of echo in Linux - Stack Overflow

posted @ 2020-09-28 17:30  azureology  阅读(376)  评论(0编辑  收藏  举报