如何在终端中打印带颜色的文本

echo命令



echo是终端下最常用的命令之一,用于在显示器上显示一段文字。一般格式为: echo [ -option ] 字符串

它有2个常用的选项,一个是-n,另一个是-e,下面的图就是 man echo 的结果:

echo将字符串输出后是会自动换行的,如果不想换行就需要加上-n选项。

-e的作用是强大的,想要输出有颜色的文字就不得不用借助于-e了。为什么要带颜色?看看下图就知道了

都是毛大头,快速辨别的方法就是看数字和颜色。如若看不到数字,单看颜色也能一眼辨别。

-e:启用反斜线控制字符的转换,echo 命令所支持的反斜线控制字符如下图:

\\:反斜线本身
\a:ALERT / BELL (从系统喇叭送出铃声)
\b:BACKSPACE,退格键
\c:取消行末换行符号(跟-n的作用一样)
\e:ESCAPE键
\f:FORMFEED,换页字符
\n:NEWLINE,换行字符
\r:RETURN,回车键
\t:TAB,表格跳位键
\v:VERTICAL TAB,垂直表格跳位键
\0NNN:ASCII 八进位编码
\xHH:ASCII 十六进位编码

# echo $?
//显示最后运行的命令的结束代码(返回值)

give you some color see see



在终端可以这样做:

echo -e "\033[31mhello"
echo -e "\033[31mhello\033[0m"

\e[0m会将颜色重新置回,什么时候想重置就什么时候加。

echo -e "\033[31mhello"
echo -e "\e[31mhello"

显示的效果是一样的,因为\033和\e是一样的。怎么一样呢?

echo -e "\e"    // 表示键盘左上角的Esc键
echo -e "\033"  // 八进制转义,表示Esc键
echo -e "\x1b"  // 16进制转义,表示Esc键
echo -e "\e[31mhello"
echo -e "\e[32mhello"

控制前景色的就是31这个位置的具体数字。

另外,GitHub上一个叫cecho的项目,能够方便地实现彩色打印。

在C程序中可以这样做:

#include <stdio.h>
int main()
{
    printf("\033[35mabc\n");
    printf("\e[31mdef\e[0m\n");
}

运行后可以看到紫色的abc和红色的def:

why?



终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能。

和具体的语言无关,所以C语言中的 printf/fprintf 函数也可以这样使用。

本文最重要的一句话,所有的问题都在这里,看明白了就知道怎么改变文本的显示方式了:

\033[显示方式;前景色;背景色m

把\033换成\e是一样的:

\e[显示方式;前景色;背景色m

解释:

①颜色的转义序列是以 ESC 开头

②显示方式:0(默认值)、1(高亮)、

22(非粗体)、4(下划线)、24(非下划线)、5(闪烁)、25(非闪烁)、7(反显)、27(非反显)

③前景色:

30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)

④背景色:

40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋红)、46(青色)、47(白色)

⑤\033[0m表示默认,可以关闭前边设置的任何效果

注意:echo的字符串这时必须用引号括起来。

附录-ASCII码表


ASCII码表
八进制 十六进制 十进制 字符 八进制 十六进制 十进制 字符
00 00 0 nul 100 40 64 @
01 01 1 soh 101 41 65 A
02 02 2 stx 102 42 66 B
03 03 3 etx 103 43 67 C
04 04 4 eot 104 44 68 D
05 05 5 enq 105 45 69 E
06 06 6 ack 106 46 70 F
07 07 7 bel 107 47 71 G
10 08 8 bs 110 48 72 H
11 09 9 ht 111 49 73 I
12 0a 10 nl 112 4a 74 J
13 0b 11 vt 113 4b 75 K
14 0c 12 ff 114 4c 76 L
15 0d 13 cr 115 4d 77 M
16 0e 14 so 116 4e 78 N
17 0f 15 si 117 4f 79 O
20 10 16 dle 120 50 80 P
21 11 17 dc1 121 51 81 Q
22 12 18 dc2 122 52 82 R
23 13 19 dc3 123 53 83 S
24 14 20 dc4 124 54 84 T
25 15 21 nak 125 55 85 U
26 16 22 syn 126 56 86 V
27 17 23 etb 127 57 87 W
30 18 24 can 130 58 88 X
31 19 25 em 131 59 89 Y
32 1a 26 sub 132 5a 90 Z
33 1b 27 esc 133 5b 91 [
34 1c 28 fs 134 5c 92 \
35 1d 29 gs 135 5d 93 ]
36 1e 30 re 136 5e 94 ^
37 1f 31 us 137 5f 95 _
40 20 32 sp 140 60 96
41 21 33 ! 141 61 97 a
42 22 34 " 142 62 98 b
43 23 35 # 143 63 99 c
44 24 36 $ 144 64 100 d
45 25 37 % 145 65 101 e
46 26 38 & 146 66 102 f
47 27 39 ` 147 67 103 g
50 28 40 ( 150 68 104 h
51 29 41 ) 151 69 105 i
52 2a 42 * 152 6a 106 j
53 2b 43 + 153 6b 107 k
54 2c 44 , 154 6c 108 l
55 2d 45 - 155 6d 109 m
56 2e 46 . 156 6e 110 n
57 2f 47 / 157 6f 111 o
60 30 48 0 160 70 112 p
61 31 49 1 161 71 113 q
62 32 50 2 162 72 114 r
63 33 51 3 163 73 115 s
64 34 52 4 164 74 116 t
65 35 53 5 165 75 117 u
66 36 54 6 166 76 118 v
67 37 55 7 167 77 119 w
70 38 56 8 170 78 120 x
71 39 57 9 171 79 121 y
72 3a 58 : 172 7a 122 z
73 3b 59 ; 173 7b 123 {
74 3c 60 < 174 7c 124 |
75 3d 61 = 175 7d 125 }
76 3e 62 > 176 7e 126 ~
77 3f 63 ? 177 7f 127 del
时间: 2024-10-13 14:03:06

如何在终端中打印带颜色的文本的相关文章

shell终端中更改提示符颜色

shell终端中的提示符颜色是由环境变量中的PS1决定的,因此更改PS1即可. 1>临时更改     [[email protected]~]# echo $PS1         [\[email protected]\h\w]\$     [[email protected]~]# PS1="\[\033[31m\][\[email protected]\h\w]\[\e[0m\]\\$ "     [[email protected]~]# 使用echo $PS1 查看此时

Python全栈__服务器与多客户端通信、UDP协议、pycharm打印带颜色输出、时间同步的机制

1.服务器与多客户端通信 1 import socket 2 # 创建tcp socket的套接字 3 sk = socket.socket() 4 # bind 5 sk.bind(('127.0.0.1',8080)) 6 # 监听 7 sk.listen(5) 8 # 等待连接 9 while 1: 10 conn, addr = sk.accept() 11 while 1: 12 msg_s = input('>>>') 13 conn.send(msg_s.encode('u

shell 中echo带颜色输出

在shell中使用echo命令输出带颜色的文本 名称 echo - 显示一行文本 概要 echo [选项]... [字符串]... 描述 向标准输出输出字符串. -n     不输出换行符 -e     打开反斜杠ESC转义 -E     取消反斜杠ESC转义 (默认) --help 显示帮助 --version 显示版本 注意要输出颜色必须有 -e 选项. 然后说一下重点:ANSI控制码在输出有颜色文本方面应用. -e 用来开启echo中的转义 \e 或 \033 来输出Esc符号 设置颜色的

python带颜色输出文本

我们可以通过对有用的信息设置不同颜色来达到醒目的效果,因为我平时都是在linux下开发,而linux终端中的颜色是用转义序列控制的,转义序列是以ESC开头,可以用\033完成相同的工作(ESC的ASCII码用十进制表示就是27,等于用八进制表示的33). 书写格式,和相关说明如下: 复制代码 代码如下: 格式:\033[显示方式;前景色;背景色m 说明:前景色            背景色           颜色---------------------------------------30

python控制台实现打印带颜色的字体

控制台颜色分类: 数值表示的参数含义: 显示方式: 0(默认值).1(高亮).22(非粗体).4(下划线).24(非下划线). 5(闪烁).25(非闪烁).7(反显).27(非反显)前景色: 30(黑色).31(红色).32(绿色). 33(黄色).34(蓝色).35(洋 红).36(青色).37(白色)背景色: 40(黑色).41(红色).42(绿色). 43(黄色).44(蓝色).45(洋 红).46(青色).47(白色) 源码: 1 #!/user/bin/env python 2 #-*

python3使用print打印带颜色的字符串

一.实现过程 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033) 书写格式: 开头部分:\033[显示方式;前景色;背景色m + 结尾部分:\033[0m 注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个:另外由于表示三个参数不同含义的数值都是唯一的没有重复的,所以三个参数的书写先后顺序没有固定要求,系统都能识别:但是,建议按

shell 带颜色输出

这里记录了shell脚本中可以带颜色输出的方式,使用了一下在python也适用. shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e 格式如下: echo -e "\033[字背景颜色:文字颜色m字符串\033[0m" 例如: echo -e "\033[41;36m something here \033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色 1.字背景颜色和文字颜色之间是英文的"" 2.文字

shell脚本中echo显示内容带颜色

转自:http://www.cnblogs.com/lr-ting/archive/2013/02/28/2936792.html shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e 格式如下: echo -e "\033[字背景颜色:文字颜色m字符串\033[0m" 例如: echo -e "\033[41;36m something here \033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色 注:  1.字背景颜

Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录)

Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录) 作者:王可利(Star·星星) 效果图: 代码如下: 1 class Star8 2 { 3 public static void main(String[] args) 4 { 5 /* 空格 6 * 1 2*i-1 3 4-1 4-i 7 *** 3 2 4-2 8 ***** 5 1 4-3 9 ******* 7 0 4-4 10 */ 11 //第一层循环控制的是行数 12 for(int i = 1;i<=