shell中printf的彩色方案
颜色是通过添加专用序列来选择的 – 夹在 “\e[“和 “m”之间的数字。如果指定一个以上的数字,则用分号将它们分开。
echo -e “\e[31;42m”
使用”\e[0m”序列将颜色重新设置为正常值
颜色分类
\e[30m – \e[37m 设置前景色(字体颜色)
echo -e “\e[30m” 灰色
echo -e “\e[31m” 红色
echo -e “\e[32m” 绿色
echo -e “\e[33m” 黄色
echo -e “\e[34m” 蓝色
echo -e “\e[35m” 紫色
echo -e “\e[36m” 淡蓝色
echo -e “\e[37m” 白色
\e[40m – \e[47m 设置背景色
echo -e “\e[40m” 灰色
echo -e “\e[41m” 红色
echo -e “\e[42m” 绿色
echo -e “\e[43m” 黄色
echo -e “\e[44m” 蓝色
echo -e “\e[45m” 紫色
echo -e “\e[46m” 淡蓝色
echo -e “\e[47m” 白色
其他的一些参数
\033[0m 关闭所有属性
\033[1m 设置高亮度
\03[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m – \033[37m 设置前景色
\033[40m – \033[47m 设置背景色
\033[nA 光标上移n行
\03[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\33[?25h 显示光标
#! /bin/bash
bar=''
lable=('|' '/' '-' '\\')
for i in {0..100}
do
((color=30+i%8)) #控制进度条颜色
echo -en "\e[1;"$color"m"
printf "[%-100s]\033[1;32m [%d]\033[1;36m%%\033[1;34m [%c]\033[0m \r" "$bar" "$i" "${lable[$index]}"
bar='#'$bar
let index=i%4
let index++
usleep 100000
done
printf "\n"
效果如下
这是一个颜色时刻变化的进度条,如果想要单色只需更改下列代码即可
((color=30+i%8)) #控制进度条颜色