【问题标题】:Meanings of terminal codes \033[E and \033[07, which appear in printf() statements?printf() 语句中出现的终端代码\033[E 和\033[07] 的含义?
【发布时间】:2017-01-05 12:46:27
【问题描述】:

在 Game of Life 程序的 C 实现中,如 here 所示,我提到的代码出现在 show() 函数中。我根本找不到任何关于 033[E 含义的信息,而对于 \033[07 这通常是 linux bash 终端中的颜色代码,其中 \033[07m 我们开始颜色编码和 \033[m 我们结束预定义的颜色编码。但是,根据this 网站,它的意思是“反向”。我不确定那是什么意思。

虽然我对\033[E 代码更感兴趣,但我找不到任何信息。通过在 Linux bash 上使用 gcc 测试和调试程序,我看到没有此命令,输出不会按预期显示。如果有人可以分享这方面的知识,我将不胜感激。提前致谢。

【问题讨论】:

  • google "ansi 转义码"。
  • 你用谷歌搜索了问题的确切标题吗?
  • @WeatherVane:这没什么用。 Stackoverflow 在谷歌搜索结果中的排名总是很高。所以,如果有人在下周用谷歌搜索这个问题,他们会得到你的评论作为答案。
  • @Lucas:如果问题被删除,则不会。
  • @Lucas 我之前评论中的哪些关键字与搜索问题主题有关?我应该为他搜索一下吗?但我会给出更好的答案:八进制数033是十进制数27,即转义序列。

标签: terminal ansi-escape


【解决方案1】:

序列ESC [ E 在该源中是一个错误——或者可能是一个超正确的版本。代码为ESC E,用于将光标移动到the next line[ 表示它可以采用可选的数字参数( 或更多),在这种情况下没有,因此可以省略。 (数字参数表示要跳过多少行;01 显示常规换行符,较高的值使其跳过行。)

这个定义很难找到,因为通常只使用\n(常规换行代码)将光标移动到终端程序下一行的开头。

序列ESC [07m 还包含一个冗余代码,ESC [7m 足以使终端进入反向模式。您可能习惯于将它添加到颜色序列的开头,这样您就可以设置文本的 前景色(来自30..37 的数字)而不是 背景(@ 987654332@),然后用空格画一个彩色方块。

【讨论】:

  • \n不完全一样。转义序列\033[nE(其中n 是一个数字)可用于一次移动多行并且(至少在某些终端上)不会超过控制台窗口的底部(即它不会启动滚动)。
  • @squeamishossifrage:谢谢,改写了。你有好的资源吗?我链接到的页面没有提到它。
  • Wikipedia 中有一个相当全面的列表。我找不到任何提到缺少滚动的来源,但这就是 Ubuntu 和 OS X 的行为方式。
  • @RestlessC0bra:这是基本的 C 字符串表示法。它不是十进制,而是 八进制,如前导 \0 所示。所以033 到十进制是 3*8 + 3 = 27。
  • @RestlessC0bra:它反转前景和背景颜色。尝试设置前景和背景,打印几个字符,然后反转,然后再次打印一些字符。
猜你喜欢
  • 2022-11-04
  • 2013-03-28
  • 2019-09-04
  • 1970-01-01
  • 2020-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多