Linux 终端字体颜色

Linux 终端字体颜色其实就是如何设置 PS1 变量的问题

颜色显示格式

表达式

1
2
3
4
5
6
7
颜色=\033[代码;前景色;背景色m 字符串 \033[0m

可以有以下形式:
颜色=\033[代码m 字符串 \033[0m
颜色=\033[前景m 字符串 \033[0m
颜色=\033[背景色m 字符串 \033[0m
颜色=\033[前景色;背景色m 字符串 \033[0m

举例

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

前景色、背景色

1
2
3
4
5
6
7
8
9
10
11
前景     背景      颜色
---------------------------------------
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 紫紅色
36 46 青藍色
37 47 白色
1 1 透明色

代码

1
2
3
4
5
6
7
8
代码         意义
-------------------------
0 OFF,关闭所有属性
1 高亮显示
4 underline,下划线
5 闪烁
7 反白显示
8 不可见,消隐

序列说明

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
\a ASCII响铃字符(也可以键入 \007)
\d "Wed Sep 06"格式的日期
\e ASCII转义字符(也可以键入 \033)
\h 主机名的第一部分(如 "mybox"
\H 主机的全称(如 "mybox.mydomain.com"
\j 在此 shell中通过按 ^Z挂起的进程数
\l 此 shell的终端设备名(如 "ttyp4"
\n 换行符
\r 回车符
\s shell的名称(如 "bash"
\t 24小时制时间(如 "23:01:01"
\T 12小时制时间(如 "11:01:01"
\@ 带有 am/pm的 12小时制时间
\u 用户名
\v bash的版本(如 2.04
\V Bash版本(包括补丁级别) ?/td>;
\w 当前工作目录(如 "/home/drobbins"
\W 当前工作目录的“基名 (basename)”(如 "drobbins"
\! 当前命令在历史缓冲区中的位置
\# 命令编号(只要您键入内容,它就会在每次提示时累加)
\$ 如果您不是超级用户 (root),则插入一个 "$";如果您是超级用户,则显示一个 "#"
\xxxb插入一个用三位数 xxx(用零代替未使用的数字,如 "/007")表示的 ASCII字符
\\ 反斜杠
\[ 这个序列应该出现在不移动光标的字符序列(如颜色转义序列)之前。它使 bash能够正确计算自动换行。
\] 这个序列应该出现在非打印字符序列之后。

Linux 设置

首先我们不考虑添加颜色的问题,首先在 ~/.bashrc 文件添加:

1
export PS1="\u@\h:\w\$"

然后新开一个终端,你看不到和以前有什么区别,因为我们一般系统默认的设置就是这样的,关于\u,\h,\w和$的含义参见上表,

其实修改字体颜色的公式很简单为:

1
PS1=颜色+字符或序列+颜色+字符或序列......

注意:要将全部非打印字符用专用的 bash 转义序列 “[“和 “]“括起来。这两个序列通知 bash,被括起来的字符不占用行上的任何空间,这样就使自动换行能够继续正常工作。

这点很关键要不然等你设好了颜色,你的终端换行会乱七八糟

所以我们的颜色需要这样(网上很多文章都漏过了这一步)

颜色=[\033[代码;前景;背景m]

python 终端修改颜色

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class MyColor(object):
def handle(self, old_str, foreground_color, background_color='', special_effect=''):
return '\033[{};{};{}m {} \033[0m'.format(special_effect, foreground_color, background_color, old_str)

@classmethod
def str_info(self, old_str):
return self.handle(self, old_str, '30', '42')

@classmethod
def str_warn(self, old_str):
return self.handle(self, old_str, '30', '43', '4')

@classmethod
def str_error(self, old_str):
return self.handle(self, old_str, '30', '41', '5')

Linux 终端字体颜色
https://flepeng.github.io/002-Linux-Linux-终端字体颜色/
作者
Lepeng
发布于
2021年3月9日
许可协议