这里记录一下各个语言的颜色输出,主要是Python、Shell、Javascript和NodeJS

Shell

输出展示

语法格式为:

1
echo -e "\033[fg;bg \033[0m";

其中,fg是前景色,bg是背景色,\033[0m是重置颜色,具体颜色对应的代码如下:

前景色 背景色 颜色
30 40 黑色
31 41 红色
32 42 绿色
33 43 黃色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色
结尾标识 含义
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\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 显示光标

封装为函数:

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
46
47
48
49
50
cfont()
{
while (($#!=0))
do
case $1 in
-b)
echo -ne " ";
;;
-t)
echo -ne "\t";
;;
-n) echo -ne "\n";
;;
-black)
echo -ne "\033[30m";
;;
-red)
echo -ne "\033[31m";
;;
-green)
echo -ne "\033[32m";
;;
-yellow)
echo -ne "\033[33m";
;;
-blue)
echo -ne "\033[34m";
;;
-purple)
echo -ne "\033[35m";
;;
-cyan)
echo -ne "\033[36m";
;;
-white|-gray) echo -ne "\033[37m";
;;
-reset)
echo -ne "\033[0m";
;;
-h|-help|--help)
echo "Usage: cfont -color1 message1 -color2 message2 ...";
echo "eg: cfont -red [ -blue message1 message2 -red ]";
;;
*)
echo -ne "$1"
;;
esac
shift
done
}

调用

1
cfont -green 'some words\t' -red 'some word\n'

JavaScript

语法格式

1
2
3
4
5
6
7
// 多种样式作用到同一段落
const styles = ['color: yellow', 'background: black'].join(';');
const message = 'Some Important Message Here';
console.log('%c%s', styles, message);

// 多种样式作用到不同段落
console.log("%c%s%c%s", "color: green", msg, "color: red", msg)

效果:

Python

python的颜色输出和shell类似,格式如下:

1
\ 033 [显示方式;字体色;背景色m ...... [\ 033 [0m]
显示方式 效果 字体色 背景色 颜色描述
0 终端默认设置 30 40 白色
1 高亮显示 31 41 红色
4 使用下划线 32 42 绿色
5 闪烁 33 43 黄色
7 反白显示 34 44 蓝色
8 不可见 35 45 紫红色
36 46 青蓝色
37 47 黑色
1
2
3
print('This is a \033[1;35m test \033[0m!')
print('This is a \033[1;32;43m test \033[0m!')
print('\033[1;31;40mThis is a test !\033[0m')

推荐一个Python封装好的颜色库:

1
pip install rich

用法

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
from rich.console import Console
from rich.table import Column, Table
from rich.progress import track
from time import sleep
from rich.markdown import Markdown
# 实例化控制台输出
console = Console()

# 正常输出
console.print("Hello", "World!")

# 添加样式 红字加粗
console.print("Hello", "World!", style="bold red")

# 添加表情
console.print(":smiley: :vampire: :pile_of_poo: :thumbs_up: :raccoon:")

# 输出表格
table = Table(show_header=True, header_style="bold magenta")
table.add_column("Date", style="dim", width=12)
table.add_column("Title")
table.add_column("Production Budget", justify="right")
table.add_column("Box Office", justify="right")
table.add_row("Dev 20, 2019", "Star Wars: The Rise of Skywalker", "$275,000,000", "$375,126,118")
table.add_row("May 25, 2018","[red]Solo[/red]: A Star Wars Story","$275,000,000","$393,151,347",)
table.add_row("Dec 15, 2017","Star Wars Ep. VIII: The Last Jedi","$262,000,000","[bold]$1,332,539,889[/bold]",)

console.print(table)


# 进度条
for step in track(range(100)):
sleep(0.01)

效果:

Node.js

这里推荐ColorJS,Node中控制台不能够像浏览器中那样打印颜色

https://www.npmjs.com/package/colors

1
yarn add colors

效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var colors = require('colors');

// .调用和链式调用
console.log('Lorem ipsum dolor sit amet consectetur adipisicing.'.green);
console.log('Lorem ipsum dolor sit amet consectetur adipisicing.'.underline.red)

// 函数式调用
console.log(colors.green("[ INFO ]"),"Lorem ipsum dolor sit amet consectetur adipisicing.");
console.log(colors.rainbow("[ INFO ]"),"Lorem ipsum dolor sit amet consectetur adipisicing.");
console.log(colors.red("[ INFO ]"),"Lorem ipsum dolor sit amet consectetur adipisicing.");

// 自定义
colors.setTheme({
silly: 'rainbow',
debug: 'blue',
error: 'red',
custom: ['red', 'underline']
});

// outputs red text
console.log("Lorem ipsum dolor sit amet consectetur adipisicing.".error);