# Linux终端控制字符详解以及简单应用实践

Linux终端控制字符详解以及简单应用实践

文章目录

  • Linux终端控制字符详解以及简单应用实践
    • 1 控制字符表
    • 2 控制字符 ESC (0x1B,^[)子参数表
    • 3 控制字符 ESC (0x1B,^[)子参数表 - 字符颜色参照表
    • 4 实践:使用控制字符输出带颜色文字
    • 5 附加:ASCII码表
    • 6 最后

了解Linux终端控制字符及输出彩色文字的方法

1 控制字符表

在根据映射表进行转换之前,如果字符是以下14个代码中的一个【00(NUL)、07(BEL)、08(BS)、09(HT)、0a(LF)、0b(VT)、0c(FF)、0d(CR)、0e(SO)、0f(SI)、18(CAN)、1a(SUB)、1b(ESC)、7f(DEL)】,则字符是控制字符。可以设置“显示控制字符”模式(见下文),并允许07、09、0b、18、1a、7f显示为字形。另一方面,在UTF-8模式下,所有代码00–1f都被视为控制字符,而不考虑任何“显示控制字符”模式。 如果出现一个控制字符,它会立即被操作,然后被丢弃(即使在转义序列的中间),转义序列会继续下一个字符。(但是,ESC启动一个新的转义序列,可能会中止前一个未完成的转义序列。CAN和SUB中止任何转义序列)。

控制字符(less显示样式)(Unicode编码,vim显示样式)说明
BEL(0x07,^G)蜂鸣
BS(0x08,^H)退格一列(但不超过行的开头)
HT(0x09,^I)转到下一个制表位,或者如果没有以前的制表位,则转到行的末尾
LF(0x0A,^J)LF(0x0A,^J) 、VT(0x0B,^K) 和FF(0x0C,^L) 都提供换行,
并且如果设置了LF/NL(换行模式),则也提供回车;
CR(0x0D,^M)回车
SO(0x0E,^N)激活G1字符集
SI(0x0F,^O)激活G0字符集
CAN(0x18,^X)CAN(0x18,^X) 和 SUB(0x1A,^Z) 终止转义序列
ESC(0x1B,^[)开启转义序列
DEL(0x7F)被忽略
CSI(0x9B)等同于 ESC [

更多控制字符请看:man console_codes

2 控制字符 ESC (0x1B,^[)子参数表

1 控制字符用途2 反向控制字符用途备注
\x1b[0m关闭所有属性\x1b 是16进制方式,也可以用8进制 \033替换,下同
\x1b[1m高亮\x1b[22m不高亮
\x1b[4m下划线\x1b[24m去下划线
\x1b[5m闪烁\x1b[25m不闪烁
\x1b[7m反显\x1b[27m不反显
\x1b[8m不显示\x1b[28m显示
\x1b[30m – \x1b[37m设置前景色\x1b[40m – \x1b[47m设置背景色参考【字符颜色参照表】
\x1b[nA光标上移n行\x1b[nB光标下移n行
\x1b[nD光标左移n列\x1b[nC光标右移n列
\x1b[2J清屏
\x1b[K清除从光标到行尾的内容
\x1b[y;H设置光标位置
\x1b[s保存光标位置\x1b[u恢复光标位置
\x1b[?25l隐藏光标\x1b[?25h显示光标

字符控制前导码:\x1b 是16进制的,也可以用8进制 \033替换(参考后文ASCII码表)

字符控制前导码在vim中显示为【彩色^[】;在less中显示为【反显ESC

3 控制字符 ESC (0x1B,^[)子参数表 - 字符颜色参照表

前景色背景色颜色备注
3040黑色
3141红色
3242绿色
3343黃色
3444蓝色
3545洋红
3646青色
3747白色

4 实践:使用控制字符输出带颜色文字

  • 颜色定义示例:
\x1b[31m           #-- 前景红色
\x1b[34;1m         #-- 前景蓝色,高亮
\x1b[30;42;1m      #-- 前景黑色,高亮,背景绿色
\x1b[0m            #-- 关闭颜色属性
  • shell中输出带颜色文字:
# 16进制:
echo -e  "\x1b[31;45m 要显示的文字 \x1b[0m"
# 或8进制:
echo -e  "\033[31;45m 要显示的文字 \033[0m"
  • 进度条

    #!/bin/sh
    showprogress()
    {code=""for((i=1;i<=20;i++));docode=${code}"$1"if [ $2 -eq "1" ]; thenprintf "%3d%% \x1b[31m%s\x1b[0m\r" $(($i*5)) $codeelseprintf "%3d%% \x1b[41m\x1b[31m%s\x1b[0m\r" $(($i*5)) $codefisleep 0.5doneecho
    }showprogress "#" 1
    showprogress "1" 2
    

    %3d: 代表3个数字宽度

    %%: 代表输出一个%

    %s: 代表是普通字符串

5 附加:ASCII码表

Bin(二进制)Oct(八进制)Dec(十进制)Hex(十六进制)缩写/字符解释
0000 00000000x00NUL(null)空字符
0000 00010110x01SOH(start of headline)标题开始
0000 00100220x02STX (start of text)正文开始
0000 00110330x03ETX (end of text)正文结束
0000 01000440x04EOT (end of transmission)传输结束
0000 01010550x05ENQ (enquiry)请求
0000 01100660x06ACK (acknowledge)收到通知
0000 01110770x07BEL (bell)响铃
0000 100001080x08BS (backspace)退格
0000 100101190x09HT (horizontal tab)水平制表符
0000 1010012100x0ALF (NL line feed, new line)换行键
0000 1011013110x0BVT (vertical tab)垂直制表符
0000 1100014120x0CFF (NP form feed, new page)换页键
0000 1101015130x0DCR (carriage return)回车键
0000 1110016140x0ESO (shift out)不用切换
0000 1111017150x0FSI (shift in)启用切换
0001 0000020160x10DLE (data link escape)数据链路转义
0001 0001021170x11DC1 (device control 1)设备控制1
0001 0010022180x12DC2 (device control 2)设备控制2
0001 0011023190x13DC3 (device control 3)设备控制3
0001 0100024200x14DC4 (device control 4)设备控制4
0001 0101025210x15NAK (negative acknowledge)拒绝接收
0001 0110026220x16SYN (synchronous idle)同步空闲
0001 0111027230x17ETB (end of trans. block)结束传输块
0001 1000030240x18CAN (cancel)取消
0001 1001031250x19EM (end of medium)媒介结束
0001 1010032260x1ASUB (substitute)代替
0001 1011033270x1BESC (escape)换码(溢出)
0001 1100034280x1CFS (file separator)文件分隔符
0001 1101035290x1DGS (group separator)分组符
0001 1110036300x1ERS (record separator)记录分隔符
0001 1111037310x1FUS (unit separator)单元分隔符
0010 0000040320x20(space)空格
0010 0001041330x21!叹号
0010 0010042340x22"双引号
0010 0011043350x23#井号
0010 0100044360x24$美元符
0010 0101045370x25%百分号
0010 0110046380x26&和号
0010 0111047390x27闭单引号
0010 1000050400x28(开括号
0010 1001051410x29)闭括号
0010 1010052420x2A*星号
0010 1011053430x2B+加号
0010 1100054440x2C,逗号
0010 1101055450x2D-减号/破折号
0010 1110056460x2E.句号
0010 1111057470x2F/斜杠
0011 0000060480x300字符0
0011 0001061490x311字符1
0011 0010062500x322字符2
0011 0011063510x333字符3
0011 0100064520x344字符4
0011 0101065530x355字符5
0011 0110066540x366字符6
0011 0111067550x377字符7
0011 1000070560x388字符8
0011 1001071570x399字符9
0011 1010072580x3A:冒号
0011 1011073590x3B;分号
0011 1100074600x3C<小于
0011 1101075610x3D=等号
0011 1110076620x3E>大于
0011 1111077630x3F?问号
0100 00000100640x40@电子邮件符号
0100 00010101650x41A大写字母A
0100 00100102660x42B大写字母B
0100 00110103670x43C大写字母C
0100 01000104680x44D大写字母D
0100 01010105690x45E大写字母E
0100 01100106700x46F大写字母F
0100 01110107710x47G大写字母G
0100 10000110720x48H大写字母H
0100 10010111730x49I大写字母I
010010100112740x4AJ大写字母J
0100 10110113750x4BK大写字母K
0100 11000114760x4CL大写字母L
0100 11010115770x4DM大写字母M
0100 11100116780x4EN大写字母N
0100 11110117790x4FO大写字母O
0101 00000120800x50P大写字母P
0101 00010121810x51Q大写字母Q
0101 00100122820x52R大写字母R
0101 00110123830x53S大写字母S
0101 01000124840x54T大写字母T
0101 01010125850x55U大写字母U
0101 01100126860x56V大写字母V
0101 01110127870x57W大写字母W
0101 10000130880x58X大写字母X
0101 10010131890x59Y大写字母Y
0101 10100132900x5AZ大写字母Z
0101 10110133910x5B[开方括号
0101 11000134920x5C\反斜杠
0101 11010135930x5D]闭方括号
0101 11100136940x5E^脱字符
0101 11110137950x5F_下划线
0110 00000140960x60`开单引号
0110 00010141970x61a小写字母a
0110 00100142980x62b小写字母b
0110 00110143990x63c小写字母c
0110 010001441000x64d小写字母d
0110 010101451010x65e小写字母e
0110 011001461020x66f小写字母f
0110 011101471030x67g小写字母g
0110 100001501040x68h小写字母h
0110 100101511050x69i小写字母i
0110 101001521060x6Aj小写字母j
0110 101101531070x6Bk小写字母k
0110 110001541080x6Cl小写字母l
0110 110101551090x6Dm小写字母m
0110 111001561100x6En小写字母n
0110 111101571110x6Fo小写字母o
0111 000001601120x70p小写字母p
0111 000101611130x71q小写字母q
0111 001001621140x72r小写字母r
0111 001101631150x73s小写字母s
0111 010001641160x74t小写字母t
0111 010101651170x75u小写字母u
0111 011001661180x76v小写字母v
0111 011101671190x77w小写字母w
0111 100001701200x78x小写字母x
0111 100101711210x79y小写字母y
0111 101001721220x7Az小写字母z
0111 101101731230x7B{开花括号
0111 110001741240x7C|垂线
0111 110101751250x7D}闭花括号
0111 111001761260x7E~波浪号
0111 111101771270x7FDEL (delete)删除

6 最后

img

爱你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python实现HBA混合蝙蝠智能算法优化循环神经网络分类模型(LSTM分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法&#xff0c;是一种搜索全局最优解的有效方法…

算法安全自评估制度建设风险研判之算法滥用与算法漏洞

在我们的现代社会中&#xff0c;算法无处不在&#xff0c;它们以一种我们难以想象的方式影响着我们的生活。从我们的社交媒体喜好&#xff0c;到搜索引擎结果&#xff0c;再到可能的就业机会&#xff0c;无一不在算法的调控之中。然而&#xff0c;随着算法的广泛使用&#xff0…

数据库系列文章 之 MySQL分表的三种方法

先说一下为什么要分表 当一张的数据达到几百万时&#xff0c;你查询一次所花的时间会变多&#xff0c;如果有联合查询的话&#xff0c;我想有可能会死在那儿了。分表的目的就在于此&#xff0c;减小数据库的负担&#xff0c;缩短查询时间。 根据个人经验&#xff0c;mysql执行一…

2023无监督摘要顶会论文合集

2023无监督摘要顶会论文合集 写在最前面ACL-2023Aspect-aware Unsupervised Extractive Opinion Summarization 面向的无监督意见摘要&#xff08;没找到&#xff09;Unsupervised Extractive Summarization of Emotion Triggers *情绪触发(原因)的 *无监督 *抽取式 摘要&#…

DETR (DEtection TRansformer)基于自建数据集开发构建目标检测模型超详细教程

目标检测系列的算法模型可以说是五花八门&#xff0c;不同的系列有不同的理论依据&#xff0c;DETR的亮点在于它是完全端到端的第一个目标检测模型&#xff0c;DETR&#xff08;Detection Transformer&#xff09;是一种基于Transformer的目标检测模型&#xff0c;由Facebook A…

Redis 从入门到精通【进阶篇】之高可用集群(Redis Cluster)详解

文章目录 0. 前言设计目标核心概念 1. 架构设计和原理1.1. 数据分片2. 节点间通信6. 扩容和缩容 2. 总结3. Redis从入门到精通系列文章4. Redis Cluster面试题4.1. Redis Cluster如何进行扩容和缩容&#xff1f;4.2. Redis Cluster如何进行故障转移&#xff1f;4.3. Redis Clus…

【问题分析解决】git添加.gitignore后不生效问题

一&#xff0c;问题现象 在已经提交过的git管理的项目中&#xff0c;新增加一个.gitignore文件&#xff0c;或者修改.gitignore文件之后&#xff0c;新增的内容不生效。 二&#xff0c;问题原因 因为我们误解了.gitignore文件的用途&#xff0c;该文件只能作用于Untracked F…

noSQL语句练习

Redis练习题 string list hash结构中&#xff0c;每个至少完成5个命令&#xff0c;包含插入 修改 删除 查询&#xff0c;list 和hash还需要增加遍历的操作命令 1、 string类型数据的命令操作&#xff1a; &#xff08;1&#xff09; 设置键值&#xff1a; 127.0.0.1:63…

JDK JRE JVM

JDK JRE JVM JDKJREJVM三者之间的联系三者之间的区别 JDK JDK是用于开发、编译、调试和运行Java应用程序的软件包&#xff0c;包含了Java编程语言的开发工具和Java运行时环境。JDK包括Java编译器&#xff08;javac&#xff09;、Java虚拟机&#xff08;JVM&#xff09;和Java类…

单轴机器人的结构与特点

单轴机器人是由马达驱动的移动平台&#xff0c;由滚珠螺杆和 U型线性滑轨导引构成&#xff0c;其滑座同时为滚珠螺杆的驱动螺帽及线性滑轨的导引滑块&#xff0c;可用半导体、光电、交通运输业、环保节能产业、精密工具机、机械产业、智慧自动化、生技医疗上。 相对于传统的模组…

django使用channels实现webSocket启动失败

问题描述 使用channels启动ASGI结果却是普通启动&#xff0c;如下&#xff1a; Watching for file changes with StatReloader Performing system checks...System check identified no issues (0 silenced). July 15, 2023 - 18:23:49 Django version 4.2, using settings s…

JavaWeb(3)——HTML、CSS、JS 快速入门

一、JavaScript 运算符 • 赋值运算符&#xff08; &#xff09; 赋值运算符执行过程&#xff1f; 将等号右边的值赋予给左边, 要求左边必须是一个容器 出现是为了简化代码, 比如让 let age 18 &#xff0c;age 加 2 怎么写呢 let age 18age 2console.log(age)age * 2con…

【运维】第02讲(下):企业 Nginx 高性能优化配置实战总结

如果你作为网站类的技术工程师,并且把 Nginx 作为代理入口的 HTTP 网关,这时对于网站优化有效的方式除了需要考虑基础配置优化外,更有用的方式就是优化缓存,这一课时我们就详细讲解缓存配置优化的具体内容。 用到缓存优化主要期望提高网站服务访问效率,减少服务端的性能使…

HCIP第十三天(笔记)

STP --- 生成树协议 冗余 线路冗余 设备冗余 网关冗余 UPS冗余 二层环路引发的问题 1.广播风暴 --- 广播帧在二层环路中会形成顺时针和逆时针两重环路&#xff0c;无限循环&#xff0c;最终将导致设备宕机&#xff0c;最终导致网络瘫痪 2.MAC地址表的翻摆&#xff08;MAC地址…

javaee jstl表达式

jstl是el表达式的扩展 使用jstl需要添加jar包 package com.test.servlet;import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;import javax.servlet.ServletException; import javax.servlet…

积分商城运营成功的5个关键要素

积分商城系统运营是提高客户忠诚度和增加销售的重要策略之一。然而&#xff0c;要确保积分商城系统能够取得成功&#xff0c;需要注意一些关键要素。本文将介绍积分商城运营成功的5个关键要素&#xff0c;帮助你建立一个高效、吸引力强的积分商城系统&#xff0c;提高客户忠诚度…

下载编译Chromium

参考&#xff1a;Mac上本地编译Chrome浏览器踩坑笔记&#xff08;2021.02最新&#xff09; - 掘金 For Mac: 一、下载编译工具链&#xff1a;deptool git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git export PATH"$PATH:/Users/yumlu/cod…

Flutter 自定义 五星评价

使用 Flutter 进行自定义控件 学习使用Flutter 自定义 五星评价 展示控件 // 星星评分展示 class starRating extends StatefulWidget {// 初始化一些参数final double rating; // 当前分数final double maxRating; // 满分final int count; // 评分个数final double size; /…

什么是DevOps监控以及如何在组织中实施?

如今的软件开发商经常面临两大挑战——快速交付和大规模创新。DevOps通过在软件开发生命周期(SDLC)中引入自动化来开发和交付高质量的软件&#xff0c;从而帮助解决这些挑战。 持续集成(CI)/持续部署&#xff08;CD)是DevOps实践中自动化的关键组件。它可以自动化代码构建、测试…

力扣 1005. K 次取反后最大化的数组和

题目来源&#xff1a;https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/description/ C题解1&#xff1a;最直接的想法就是负的变正的&#xff0c;如果负的元素数量小于k&#xff0c;就挑选绝对值大的负数变正&#xff1b;如果负的元素数量大于k&#xf…