如何在Linux终端上输出彩色文字

Linux 终端支持使用特殊格式的字符串来表示后面的字符该用怎样的颜色表示,通常这种用法常用于各类编程语言中(各类编程语言都可以使用)时使用,例如输出到屏幕的日志文件或有颜色的命令提示符,以便增加整体辨识度。
不只是Linux系统终端支持彩色文字,同时可以在 Windows10 及以上的系统上使用此功能,同时在UNIX和BSD系统上也支持该功能。
需要注意的是,在终端输出颜色依靠于终端的支持度,如果终端支持的种类过少,那么最终可以显示的字符格式就会非常有限。

格式如下:

"\e[ColorOptions{;ColorOptions..}m"
# 其中 ColorOptions为 下面 二级标题 ColorOptions 中的数值。
# 其中{} 表示可选,也就是说,ColorOptions中的参数可以不止一个
# 同时 ColorOptions 中的数值组合并没有任何前后要求

例如:

echo -e '\e[94m https://www.somata.work/ \e[0m'
echo -e '\e[93;4m https://www.somata.work/ \e[0m'

在程序日志中使用:

将命令提示符添加上颜色:

PS1='[\[\033[01;31m\]\u@\h\[\033[00m\] \[\033[01;34m\]\W\[\033[00m\]]\$ '
# 注: 由于在声明变量的时候会改变原字符含义,所以这里再 [ 上也需要添加 \ 。
# 最终效果如上图中命令提示符。

ColorOptions

数值作用备注
0重置关闭所有属性
1粗体
2弱化未广泛使用
3斜体
4下划线
5缓慢闪烁低于每分钟150次
6快速闪烁每分钟150次以上
7反显前景色和背景色调换
8隐藏未广泛使用
9划除
10主字体
11-19替换字体备用字体(Linux中无法使用,并且可能导致乱码的风险)
20尖角体几乎无任何支持
21关闭粗体
22正常颜色或强度
23非斜体、非尖角体
24关闭下划线
25关闭闪烁
27关闭反显
28关闭影藏
29关闭划除
30-37设置前景色参见颜色表
38设置前景色设置256位的RGB颜色(参见脚本中的样例)
39默认前景色
40-47设置背景色参见颜色表
48设置背景色设置256位的RGB颜色(参见脚本中的样例)
49默认背景色
51Framed
52Encircled
53上划线未广泛支持
54Not Framed or encircled
55关闭上划线
60表意文字下环线或右边线几乎不支持
61表意文字双下划线或双右边线几乎不支持
62表意文字上划线或左边线几乎不支持
63表意文字双上划线或双左边线几乎不支持
64表意文字着重标指几乎不支持
65表意文字属性关闭
90-97设置前景色未遵循任何标准,所以每个终端都将有所不同
100-107设置背景色未遵循任何标准,所以每个终端都将有所不同

注:此表格是从https://zh.wikipedia.org/wiki/ANSI转义序列 中复制,并做了部分修改。

颜色表

名称前景色值背景色值颜色
3040
3141
绿3242
3343
3444
品红3545
3646
3747
亮黑(灰)90100
亮红91101
亮绿92102
亮黄93103
亮蓝94104
亮品红95105
亮青96106
亮白97107

快速查询颜色的脚本

ColorOptions 中的实现

#!/usr/bin/bash
# 注: 次脚本请勿再Linux终端使用,会导致终端乱码,只能通过重启解决。
# 最好使用 xshell 或 putty 终端中使用。
for i in {0..255};do
    printf "\e[%sm %3s\t \e[0m" $i $i
    if [ $((($i + 1) % 6)) == 4 ] ; then
        echo
    fi
done

在 Linux终端下执行:

在 xshell 终端下的执行:

256位颜色查询

#!/bin/bash
# 次脚本来自 https://misc.flogisoft.com/bash/tip_colors_and_formatting
# 可以在Linux终端和SSH远程连接上尝试,就会发现
# Linux终端(TLI终端)默认支持的颜色种类明显不足
for i in 38 48 ; do
    for j in {0..255} ; do
        printf "\e[${i};5;%sm  %3s  \e[0m" $j $j
        if [ $((($j + 1) % 6)) == 4 ] ; then
            echo
        fi
    done
done

在Linux终端下执行:

在 xshell 下执行:

本文经「原本」原创认证,作者乾坤盘,访问yuanben.io查询【3LO1LURJ】获取授权信息。

最后修改:2020 年 01 月 22 日 08 : 41 PM
如果觉得我的文章对你有用,请随意赞赏
或者点击网页中小广告,你的鼓励都将成为我写作的动力