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 值更改时如何仅更改文本颜色?