shell输出颜色和闪烁控制

平平淡淡是懒惰,是害怕,是贪图安逸,是一条不敢见世面的土狗

在Shell下有时候需要定制输出,比如给输出加上颜色,或者显示高亮,或者添加闪烁等。然后这些颜色代码或者控制码等相对不好记住。这个时候我们可以考虑把最终想要的结果制定成对应的函数,在使用的时候直接调用函数会方便很多

格式

1
echo -e "\033[字背景颜色;字体颜色m字符串\033[控制码"

定制颜色函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
## blue to echo 
function blue(){
echo -e "\033[34m[ $1 ]\033[0m"
}


## green to echo
function green(){
echo -e "\033[32m[ $1 ]\033[0m"
}

## Error to warning with blink
function bred(){
echo -e "\033[31m\033[01m\033[05m[ $1 ]\033[0m"
}

## Error to warning with blink
function byellow(){
echo -e "\033[33m\033[01m\033[05m[ $1 ]\033[0m"
}


## Error
function bred(){
echo -e "\033[31m\033[01m[ $1 ]\033[0m"
}

## warning
function byellow(){
echo -e "\033[33m\033[01m[ $1 ]\033[0m"
}

可以把这些函数写入到一个公共的SHELL脚本中,每次在编写其他脚本的时候用如下方式调用,即可

1
source /root/bin/common

或者可以把上述代码直接粘贴到当前编写的脚本中去。
当然可以推荐第一种方式。不用每次都复制粘贴。 直接 source 调用 即可

举例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/env bash

## blue to echo
function blue(){
echo -e "\033[35m[ $1 ]\033[0m"
}


## green to echo
function green(){
echo -e "\033[32m[ $1 ]\033[0m"
}

## Error to warning with blink
function bred(){
echo -e "\033[31m\033[01m\033[05m[ $1 ]\033[0m"
}

## Error to warning with blink
function byellow(){
echo -e "\033[33m\033[01m\033[05m[ $1 ]\033[0m"
}


## Error
function red(){
echo -e "\033[31m\033[01m[ $1 ]\033[0m"
}

## warning
function yellow(){
echo -e "\033[33m\033[01m[ $1 ]\033[0m"
}
Dev-web-solr [/opt/hexo2] 2016-11-28 17:52:03
root@pts/4 $ cat /root/bin/test.sh
#!/usr/bin/env bash

source /root/bin/common

green "hello world with green color"
blue "hello world with blue color"

bred "error info with blink"
byellow "warning info with blink"

字体背景颜色

1
2
3
4
5
6
7
8
40:黑 
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色

字体颜色

1
2
3
4
5
6
7
8
30:黑 
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色

控制码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
\33[0m 关闭所有属性 
\33[01m 设置高亮度
\33[04m 下划线
\33[05m 闪烁
\33[07m 反显
\33[08m 消隐
\33[30m -- \33[37m 设置前景色
\33[40m -- \33[47m 设置背景色
\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 显示光标

https://www.jianshu.com/p/ba1b8aded634