Linux 中的彩色控制台输出

2024-01-06

我刚刚开始学习C语言编程。 第一个问题是选择在哪个平台上学习,我选择了Ubuntu。 我找到了一个 GCC 编译器来编译我的项目,它对我来说工作得很好。我通过终端运行我编译的项目。 但是当我想编写一个必须在彩色背景上显示文本的程序时,我意识到终端对我没有帮助。实际上我正在学习为 Windows 编程编写的课程,他们使用 Borland C++ 5.2,但这些课程是在 2007 年编写的

所以我想知道,我应该在 Ubuntu 10.10 中哪里运行我编译的程序才能正确看到结果? 实际上我尝试转移到 Windows,但是我的计算机上的 Ubuntu 运行速度更快,而且我认为在 Ubuntu 中工作比在 Windows 中更容易。


无需任何工具包即可打印彩色消息的最简单方法是使用 VT100 转义命令:http://www.termsys.demon.co.uk/vtansi.htm#colors http://www.termsys.demon.co.uk/vtansi.htm#colors

所以你可以写这样的东西:

printf("\x1b[31mThis is red text\x1b[0m\n");
printf("\x1b[32mThis is green text\x1b[0m\n");

但此代码仅适用于 VT100 兼容终端(几乎所有 Unix 系统终端)。最好的方法是在对输出进行着色之前检查 TERM 环境变量。

免责声明:如果您想编写适用于所有终端类型的代码,那么您应该使用类似 ncurses 的库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 中的彩色控制台输出 的相关文章

  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • 获取两个字符串之间的公共部分c# [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要的是获取两个单词之间的共同部分并获取差异 例子 场景1 word1 感言 word2 Test 将返回 公共部分Test 不同之
  • 当我单击 C# 中的“取消”按钮时重定向到新页面(Web 部分)

    Cancel button tc new TableCell btnCancel new Button btnCancel Text Cancel btnCancel Click new EventHandler btnCanel Clic
  • 处理 fanart.tv Web 服务响应 JSON 和 C#

    我正在尝试使用 fanart tv Webservice API 但有几个问题 我正在使用 Json Net Newtonsoft Json 并通过其他 Web 服务将 JSON 响应直接反序列化为 C 对象 这里的问题是元素名称正在更改
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • ASP .NET MVC,创建类似路由配置的永久链接

    我需要帮助在 MVC 网站中创建类似 URL 路由的永久链接 Slug 已设置为 www xyz com profile slug 代码为 routes MapRoute name Profile url profile slug defa
  • Guid 应包含 32 位数字和 4 个破折号

    我有一个包含 createuserwizard 控件的网站 创建帐户后 验证电子邮件及其验证 URL 将发送到用户的电子邮件地址 但是 当我进行测试运行时 单击电子邮件中的 URL 时 会出现以下错误 Guid should contain
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 为什么 std::allocator 在 C++17 中丢失成员类型/函数?

    一边看着std 分配器 http en cppreference com w cpp memory allocator 我看到成员 value type pointer const pointer reference const refer
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • 在 C 中复制两个相邻字节的最快方法是什么?

    好吧 让我们从最明显的解决方案开始 memcpy Ptr const char a b 2 调用库函数的开销相当大 编译器有时不会优化它 我不会依赖编译器优化 但即使 GCC 很聪明 如果我将程序移植到带有垃圾编译器的更奇特的平台上 我也不
  • 无法使用 Ninject 将依赖项注入到从 Angular 服务调用的 ASP.NET Web API 控制器中

    我将 Ninject 与 ASP NET MVC 4 一起使用 我正在使用存储库 并希望进行构造函数注入以将存储库传递给其中一个控制器 这是实现 StatTracker 接口的上下文对象 EntityFramework public cla
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are

随机推荐

  • cv2没有属性数据

    代码来自一本教授OpenCV的书 我运行了代码 但它总是显示错误 import cv2 casc path cv2 data haarcascades haarcascade frontalface default xml faceCasc
  • 如何修复 Metro Bundler 进程退出并显示代码 1

    如何修复 Metro Bundler 进程退出并显示代码 1 Metro Bundler 进程退出 代码为 1 Error Metro Bundler process exited with code 1 at ChildProcess
  • 我可以使用 HTML 制作在 Hololens 上运行的通用应用程序吗?

    我相信这些说法是正确的 1 所有通用应用程序都以全息图的形式工作 2 可以使用 HTML JS 构建通用应用程序 这是否意味着我可以使用网络技术构建全息通用应用程序 例如 D3 js 中的全息可视化仪表板 现在下结论还为时过早 但这里有一些
  • CollectionAssert 与泛型一起使用吗?

    看起来CollectionAssert不能与泛型一起使用 这真是太令人沮丧了 我想测试的代码确实使用了泛型 我是什么做的 编写样板在两者之间进行转换 手动检查集合等效性 这失败了 ICollection
  • MySQL GROUP BY date - 如何在没有行时返回结果

    我正在编写一个查询来返回特定时间段内每天撰写的博客文章的数量 当某一天没有博客记录时 我的问题就出现了 通过我的查询 当天的结果完全被跳过 这是我的查询 SELECT DATE posted COUNT id FROM blogs WHER
  • ASP.NET 中的缓存母版页

    如何在 ASP NET 中缓存母版页 与用户控件不同 您不能单独输出缓存母版页 只能作为页面的一部分 此外 OutputCaching 无论如何也不会提高包含大量图像的工具栏的性能 有帮助的事情包括图像精灵 客户端缓存 使用 CDN 使用静
  • PHP,用什么代替create_function()?

    我知道之间的差异Lambda and Closures 我不想用Closure因为它得到了它的环境 并且var dump 它将产生大量的输出 使用 lambda 与create function 看起来是个好主意 但它正在被弃用 那么用什么
  • STA(单线程单元)COM 对象 - 生成工作线程?

    在 STA COM 对象中生成工作线程 即 COM 对象创建一个线程来执行任务 是一件坏事吗 我想 答案是 这要看情况 以我为例 我正在使用的工作线程不会干扰 访问 COM 或 COM 服务 我之所以问这个问题 是因为根据 STA COM
  • 函数调用或构造函数调用中的 C++ 数组初始化

    这个问题与帖子相关here https stackoverflow com questions 2627223 c template class constructor with variable arguments 是否可以在函数调用或构
  • 更改标题栏中的文本和背景颜色(Android)?

    我构建了一个 Android 应用程序 我正在尝试更改标题栏背景和文本颜色 在AndroidManifest xml中
  • django-guardian 示例源代码

    谁能推荐一个使用 django guardian 的优秀开源应用程序 我在理解 API 方面没有遇到困难 但我希望看到一个示例来了解实现最佳实践 数据库设计等 如果您克隆Django 守护者 https github com lukaszb
  • 当使用 fetch、axios 等时,`catch` 不会处理错误,而是您的应用程序崩溃

    为了确保我们的请求成功 首先 我们检查互联网连接 然后发送我们的请求 像这样 NetInfo isConnected fetch then async isConnected gt if isConnected try let result
  • Serilog WCF 在没有构造函数的情况下使用?

    我是 C 新手 我正在尝试在 WCF 应用程序中使用 serilog 此 WCF 应用程序托管在 IIS 6 0 上 我只需要在服务初始化时创建一次记录器 然而WCF似乎没有构造函数 如何仅创建下面的记录器一次并将其可供应用程序的其余部分使
  • 如何在消息中附加 Google Drive 文件并通过 gmail API 发送(无需下载文件)?

    我目前正在开发一个项目 需要向用户发送邮件并附加来自 Google 文档的一些文档 我有要发送的文档的文件 ID 我不想下载该文件然后将其附加到邮件中 有没有办法直接从谷歌驱动器附加文件而不将它们下载到我们的本地存储 我尝试过的方法 我首先
  • Python MatplotLib 绘制 x 轴,第一个 x 轴值标记为 1(而不是 0)

    我正在尝试使用 python 和 matplotlib 绘制向量 我的问题是 在 matplotlib pyplot 中 我的数据的 x 轴从 0 开始 到 23 结束 并且在图中也考虑了相同的情况 我想要的是这个轴以标签 1 开始 它与第
  • 如何查询 Long 值中的 null 而不从 OracleDB 获取“预期 NUMBER 但获取 BINARY”?

    我正在使用 JPQL 想要查询 Long 字段中的空值 但我总是得到一个ORA 00932 不一致的数据类型 预期的数字得到了二进制 正如我所看到的 有很多人遇到这个问题 但是有人有解决方法吗 例如这是查询 SELECT a FROM Au
  • SBT 配置与 Ivy 模块配置

    这看起来类似于sbt 配置与 Ivy 配置 https stackoverflow com questions 25269375 sbt configuration vs ivy configuration 尽管似乎没有问这个问题 有什么区
  • 在 x64 操作系统下使用 C# 查询 Jet 数据库/Excel 文件

    所以我了解到微软 Jet OLEDB 4 0用于查询 Microsoft Access MDB 文件和 Excel 电子表格等数据源的数据提供程序无法在 Windows 64 位操作系统下运行 我现在应该使用什么来查询 NET 3 5 C
  • Python3:从子模块隐式导入,避免递归导入

    想象一下以下场景 您正在编写一些由多个文件组成的模块 当您编写代码时 最终您会遇到多个文件 比方说main py and side py 互相导入 导致递归导入 这是不行的 module main py side py 你决定分手main分
  • Linux 中的彩色控制台输出

    我刚刚开始学习C语言编程 第一个问题是选择在哪个平台上学习 我选择了Ubuntu 我找到了一个 GCC 编译器来编译我的项目 它对我来说工作得很好 我通过终端运行我编译的项目 但是当我想编写一个必须在彩色背景上显示文本的程序时 我意识到终端