使用ANSI转义序列设置终端文本颜色

在使用ANSI转义序列设置终端文本颜色时,背景颜色和文本(前景)颜色的区分主要通过不同的ANSI代码来实现。ANSI转义序列使用格式为\033[代码m的结构,其中\033是转义字符(等同于\e),m指示颜色设置的结束。

文本(前景)颜色代码:

文本颜色代码范围从30到37,每个数字对应不同的颜色。也有亮色版本,代码范围从90到97。以下是一些常用的前景色代码示例:

  • 30:黑色
  • 31:红色
  • 32:绿色
  • 33:黄色
  • 34:蓝色
  • 35:品红
  • 36:青色
  • 37:白色
  • 90-97:更亮的颜色版本

背景颜色代码:

背景颜色代码范围从40到47,亮色版本从100到107,使用方法与文本颜色类似,每个数字对应不同的颜色。以下是一些常用的背景色代码示例:

  • 40:黑色背景
  • 41:红色背景
  • 42:绿色背景
  • 43:黄色背景
  • 44:蓝色背景
  • 45:品红背景
  • 46:青色背景
  • 47:白色背景
  • 100-107:更亮的背景颜色版本

结合使用示例:

要同时设置文本颜色和背景颜色,可以将它们的代码结合在同一转义序列中,用分号分隔。

echo -e "\033[31;43m红色文本黄色背景\033[0m"

在这个例子中,\033[31;43m设置了红色的文本(31)和黄色的背景(43)。\033[0m重置颜色设置,以使之后的文本恢复到默认的颜色。

使用ANSI转义序列时,记得在带有转义序列的echo命令中包含-e选项,以确保转义序列被正确解析。

ANSI转义序列中,数字代码用来指示不同的文字样式、前景(文字)颜色和背景颜色。下面是一个详细的列表包含了常用的样式代码、前景色和背景色。

文字样式代码

  • 0:重置/正常显示
  • 1:加粗或增加强度
  • 2:减弱(灰色/暗色)
  • 3:斜体
  • 4:下划线
  • 5:慢速闪烁
  • 6:快速闪烁(不普遍支持)
  • 7:反显(前景色和背景色交换)
  • 8:隐藏(不普遍支持)
  • 9:删除线(不普遍支持)

字体颜色(前景色)代码

  • 30:黑色
  • 31:红色
  • 32:绿色
  • 33:黄色(或称为棕色或橄榄色)
  • 34:蓝色
  • 35:品红(或称为紫色)
  • 36:青色(或称为蓝绿色)
  • 37:白色
  • 90-97:亮色版本(亮黑、亮红、亮绿、亮黄、亮蓝、亮品红、亮青、亮白)

背景色代码

  • 40:黑色背景
  • 41:红色背景
  • 42:绿色背景
  • 43:黄色背景
  • 44:蓝色背景
  • 45:品红背景
  • 46:青色背景
  • 47:白色背景
  • 100-107:亮色版本背景(亮黑、亮红、亮绿、亮黄、亮蓝、亮品红、亮青、亮白)

请注意,不同的终端和终端模拟器对这些颜色和样式代码的支持可能会有所不同。特别是,一些旧的终端可能不支持所有的颜色或文本样式代码。此外,当使用亮色版本代码时,具体的显示效果可能也会由于终端的配置不同而有所不同。

标准的printf函数本身并不支持直接指定RGB颜色值来设置文字或背景色。printf只负责输出字符到终端,而终端文字颜色的控制是通过ANSI转义序列实现的。尽管标准ANSI转义序列支持一组预定义的颜色,一些现代的终端仿真器支持使用扩展的ANSI转义序列来定义更具体的RGB颜色。

24位真彩色(True Color)支持

对于支持24位色(即RGB色)的终端,你可以使用以下格式的ANSI转义序列来设置前景(文本)和背景色:

  • 前景色:\033[38;2;<R>;<G>;<B>m
  • 背景色:\033[48;2;<R>;<G>;<B>m

其中<R><G><B>分别是红、绿、蓝颜色分量的值,范围从0到255。

示例

以下是一个使用RGB值设置文本颜色的例子:

#include <stdio.h>int main() {// 设置为红色文本printf("\033[38;2;255;0;0m这是红色文本\033[0m\n");// 重置文本颜色printf("\033[0m");return 0;
}

在这个例子中,\033[38;2;255;0;0m设置文本颜色为红色(RGB值为255,0,0),\033[0m用于之后重置文本颜色回默认值。

注意

  • 不是所有的终端都支持24位真彩色。在不支持真彩色的终端上使用这些转义序列可能会导致意外的显示效果。
  • 对于跨平台的脚本或应用程序,依赖于特定的终端特性(如24位颜色支持)可能会影响其通用性和可移植性。

确定你的终端环境是否支持24位RGB颜色之前,最好进行测试或者查阅你的终端文档。

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

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

相关文章

Python with MATLAB

Python with MATLAB 原文&#xff1a;Python with MATLAB - 知乎 (zhihu.com) 我问来自俄罗斯的实习生&#xff0c;你对网上争辩MATLAB和Python谁好谁坏有什么看法。实习生表示他不会Python&#xff0c;但是只要能完成老板布置的工作&#xff0c;哪个语言都无所谓。再说了&am…

c#调用c++生成的dll,c++端使用opencv, c#端使用OpenCvSharp, 返回一张图像

c代码&#xff1a; // OpenCVImageLibrary.cpp #include <opencv2/opencv.hpp> #include <vector> extern "C" { __declspec(dllexport) unsigned char* ReadImageToBGR(const char* filePath, int* width, int* height, int* step) { cv::Mat i…

事件驱动架构详解:触发与响应构建高效系统

目录 前言1. 事件驱动架构概述1.1 什么是事件1.2 事件驱动架构的核心概念 2. 事件驱动架构的实现2.1 基于消息队列的实现2.2 基于发布-订阅模式的实现2.3 基于流处理的实现 3. 事件驱动架构的优势3.1 松耦合性3.2 可扩展性3.3 异步处理3.4 灵活性 4. 事件驱动架构的应用场景4.1…

【深度学习】记录为什么没有调用GPU

排查CLIP为什么评测推理没有调用GPU&#xff0c;主要是这个代码&#xff1a;https://github.com/OFA-Sys/Chinese-CLIP/blob/master/cn_clip/eval/extract_features.py 第一次认为&#xff1a;因为model并没有to.cuda()。 但是又发现&#xff0c;model.cuda(args.gpu) # 已经加…

机器学习常见知识点 3:Boosting集成学习技术和XGB、LGB

文章目录 1、Boosting 的工作原理常见的 Boosting 算法优点和缺点如何进行加权投票 2、XGB1. XGBoost中的梯度提升2. 目标函数3. 树的构建与优化4. 处理缺失值与特征重要性 3、LGB核心特征1. 基于直方图的决策树学习2. 叶子优先策略3. 处理类别特征4. 缺失值处理 工作原理数据预…

镜像发布至dockerHub

1、login 没有账号的话去注册一个 https://hub.docker.com docker login 输入账号密码和账号2、修改镜像名格式 可以直接招我的修改 格式为你的 hub名/镜像名 3、推送

svm和决策树基本知识以及模型评价以及模型保存

svm和决策树基本知识以及模型评价以及模型保存 文章目录 一、SVM1.1&#xff0c;常用属性函数 二、决策树2.1&#xff0c;常用属性函数2.2&#xff0c;决策树可视化2.3&#xff0c;决策树解释 3&#xff0c;模型评价3.1&#xff0c;方面一&#xff08;评价指标&#xff09;3.2&…

DockerHub 镜像加速

Docker Hub 作为目前全球最大的容器镜像仓库&#xff0c;为开发者提供了丰富的资源。Docker Hub 是目前最大的容器镜像社区&#xff0c;DokcerHub的不能使用,导致在docker下pull镜像无法下载,安装kubernetes镜像也受到影响,下面请看解决方式。 1.加速原理 Docker下载加速的原理…

Android基于MediaBroswerService的App实现概述

mSession.setPlaybackState(mStateBuilder.build()); // 5. 关联 SessionToken setSessionToken(mSession.getSessionToken()); } } 根据包名做权限判断之后&#xff0c;返回根路径 Override public BrowserRoot onGetRoot(String clientPackageName, int clientUid, Bundl…

如何生成protobuf文件

背景 protobuf是一种用于序列化结构数据的工具&#xff0c;实现数据的存储与交换&#xff0c;与编程语言和开发平台无关。 序列化&#xff1a;将结构数据或者对象转换成能够用于存储和传输的格式。 反序列化&#xff1a;在其他的计算环境中&#xff0c;将序列化后的数据还原为…

FreeBSD通过CBSD管理低资源容器jail 网络NAT配置

jail容器里的系统有时候并不需要公开的地址&#xff0c;所以给它们配置内网地址即可。但是这些系统一般都有上网的需求&#xff0c;这时候可以使用nat进行解决。 CBSD可以配置NAT规则&#xff0c;只需要命令cbsd natcfg&#xff0c;配置好后cbsd naton启动即可&#xff1a; % …

Vue3.4新增的defineModel的使用

define-model的作用 在3.3及之前的版本&#xff0c;父子组件之间的通讯&#xff0c;一直都是靠props&#xff08;父传子&#xff09;和emit&#xff08;子传父&#xff09;来实现。而define-model整合了这两种方法&#xff0c;只需要在父组件中定义define-model的方法&#xf…

Spring容器中的Bean作用域

在Spring框架中&#xff0c;开发者确实主要关注两件事&#xff1a;开发Bean和配置Bean。Spring容器负责根据配置文件或注解来创建Bean实例&#xff0c;并通过依赖注入&#xff08;DI&#xff09;来管理Bean之间的依赖关系&#xff0c;这体现了控制反转&#xff08;IoC&#xff…

GIT回滚

1. 使用 git revert git revert 命令会创建一个新的提交&#xff0c;这个提交会撤销指定提交的更改。这通常用于公共分支&#xff08;如 main 或 master&#xff09;&#xff0c;因为它不会重写历史。 git revert HEAD # 撤销最近的提交 # 或者指定一个特定的提交哈希值 …

实际中应对网络丢包故障的方法

1.网络数据包发送时通时断&#xff0c;丢包严重 故障现象&#xff1a;通常故障发生时&#xff0c;该方向网络出现震荡性中断。使用Ping命令测试&#xff0c;发现在一段时间内数据包发送延时比正常值略高&#xff0c;间隔一小段时间数据包又全部丢失&#xff0c;丢包率超过60%&a…

Net开源项目推荐-WPF控件样式篇

Net开源项目推荐-WPF控件样式篇 HandyControlWPFDeveloperswpf-uidesignLive-ChartsAvalonDock HandyControl WPF控件库,比较常用的WPF开源控件库&#xff0c;对WPF原有控件样式都进行了重写和扩展&#xff0c;也增加了许多特别的控件&#xff0c;非常好用 github仓库&#x…

Day14—基于Langchain-chatchat搭建本地智能

一、基于Langchain-chatchat搭建本地智能 知识问答系统 1、项目介绍 基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现&#xff0c;开一种利用 langchain 思想实现的基于本地知识库的问答应用&#xff0c;目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知…

贪心+动归1

​​​​​​​​​​​​​​跳跃游戏 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0…

Claude3.5:编码螃蟹游戏就是这么轻松

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则…

【错误记录】Android 应用漏洞修复处理 ( 动态反调试漏洞 | 调用 Debug.isDebuggerConnected 函数查询是否被动态调试 )

文章目录 一、动态调试攻击二、Frida、Xposed 动态调试攻击应对措施三、调用 Debug.isDebuggerConnected 函数查询是否被动态调试 一、动态调试攻击 针对 Android 应用 进行 动态调试攻击 , 攻击者利用 Frida、Xposed 等调试工具 , 对 Android 应用进行 运行时 分析和修改 , 从…