C 代码更改终端文本颜色;如何恢复默认值? Linux

Posted

技术标签:

【中文标题】C 代码更改终端文本颜色;如何恢复默认值? Linux【英文标题】:C code changes terminal text color; how can I restore defaults? Linux 【发布时间】:2011-03-31 04:59:38 【问题描述】:

我有一个在 Linux 上运行的 C 文件。它以红色(失败)和绿色(通过)打印一些行。如您所料,它在 printf 语句中使用如下转义码:

#define BLACK  "\033[22;30m"
#define GREEN  "\033[22;31m"

printf(GREEN "this will show up green" BLACK "\n");

如果末尾的黑色不存在,则终端文本将继续为绿色。如果您没有抓住它,这对于具有非黑色背景的终端窗口来说很好,但否则您最终会得到黑底黑字。不好!运行程序会出现这个问题,捕获文本文件中的输出然后用“more”或“less”查看文件也是如此。

是否有恢复默认值而不是在 printf 语句末尾指定颜色的代码?这需要在 C 中,但我有兴趣阅读其他方法。


我更新了我的宏如下(注 31 为红色):

#define RESET_COLOR "\e[m"
#define MAKE_GREEN "\e[32m"

printf(MAKE_GREEN "this will show up green" RESET_COLOR "\n");

我发现以下链接有助于理解这些代码的工作原理:

http://www.phwinfo.com/forum/comp-unix-shell/450861-bash-shell-escapes-not-working-via-putty-ssh.html 解释了这些转义序列的作用,并在需要可移植性时使用ncurses。

http://www.linuxselfhelp.com/howtos/Bash-Prompt/Bash-Prompt-HOWTO-6.html

ANSI codes 显示了更多的转义序列;大局观很有用

【问题讨论】:

第一个链接(实际上)已损坏(域未续订)。第二个链接已损坏(超时)。 【参考方案1】:

尝试使用:

#define RESETCOLOR "\033[0m"

这应该将其重置为默认值。

关于这些终端代码的更多信息可以在ANSI escape code中找到。

【讨论】:

【参考方案2】:
"\033[0m"

ANSI escape code

【讨论】:

【参考方案3】:

在终端输入reset

在 Linux 和 OS X 中有一个名为 reset 的二进制文件。

【讨论】:

好吧,不是确切的答案,但也许看看它会有所帮助。 "reset" 清除终端窗口,将提示放在屏幕顶部,这不是我需要的效果,但谢谢。

以上是关于C 代码更改终端文本颜色;如何恢复默认值? Linux的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TextInput 组件中更改边框颜色“onChangeText”

UISegmentedControl 值更改时如何仅更改文本颜色?

python文本颜色设置

如何在 mac 终端中更改文本颜色和背景?

在 CSS 和 Jquery 中将颜色更改回默认值 [重复]

单击时如何更改按钮的颜色,并在下次单击时恢复为默认颜色?