发布于2026-08-18 阅读(0)
扫一扫,手机访问
为啥clear命令清不掉滚动历史呢?因为它其实只是重绘了当前的视图区域,然后把光标移到了左上角而已。终端滚动缓冲区里的历史内容,可是被完整保留下来的哦,这是它本身的设计行为,可不是什么bug。它底层发送的是ANSI序列 33[2J 33[H,并不会去触碰缓冲区的。

执行 clear 后,屏幕会变空。不过,只要一滚动鼠标滚轮,之前输出的内容就会全部回来。这可不是什么 bug,而是一种设计行为。clear 仅仅是将光标移动到顶部,并重新绘制当前视图区域,而终端缓冲区(scrollback buffer)里的内容是不会被改变的。
printf " 33c" 或 reset,但后者会重置颜色、光标状态等,慎用几乎没区别,Ctrl + L 就是 clear 的快捷键实现,底层发的 ANSI 序列相同(