我在一些随机网站上浏览过以下奇怪的字符序列。当编译并执行时,该序列清除了终端中所有先前的内容。它清除输出流中的缓冲区还是仅清除 tty 缓冲区?
int main()
{
printf("\033[H\033[J");
return 0;
}
这些都是ANSI 转义码.
\033
代表ESC
(ANSI 值 27)。
ESC [ 是一种转义序列 called 控制序列引入器 (CSI).
CSI 命令开头为ESC[
后面跟着零个或多个参数。
\033[H
(ie, ESC[H
) and \033[J
是 CSI 代码。
\033[H
将光标移动到屏幕的左上角(即屏幕中第一行的第一列)。
and
\033[J
清除从光标到屏幕末尾的屏幕部分。
组合使用时,会导致屏幕被清除,光标位于屏幕开头。
This is the functionality that you get when using Ctrl+L or clear
command on bash.
这些 CSI 也可以有参数。如果没有提供,它将使用默认值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)