【发布时间】:2014-11-30 15:07:06
【问题描述】:
通过阅读this code,我偶然发现了以下printf() 声明:
// reset, hide cursor and clear screen
printf("\e[0m\e[?25l\e[2J");
我必须承认我不是一个完全合格的 C 黑客并且不完全理解这一点。我调整了一下,删除了参数,我理解它的作用(嗯,评论实际上说明了一切),但我不知道它是如何完成的。此外,这在谷歌上有点难以搜索。
printf() 这个电话是如何工作的?
【问题讨论】:
-
man 5 termcap或man 5 terminfo -
从
printf()的角度来看,它与任何其他printf()语句一样工作:它将chars 的序列打印到标准输出。尝试将程序的输出重定向到一个文件,然后检查它的内容。 -
你看到的是一个 CSI (Control Sequence Introducer),维基百科有一个很好的列表。您可以在控制台上获得文本颜色效果、清除屏幕、移动光标等。它们通常以
\033[开头,例如要打印粗体,您将使用带有参数1的SGR CSI (m) 通过打印"\033[1m"。 SGR 参数是here,非常有趣。维基百科在底部也提供了示例。