12

控制台命令reset(1)是,我觉得太慢了。在我的机器上,执行需要 1 秒的挂墙时间。

为什么是这样?可以快速制作吗?或者,是否有另一个命令可以擦除我的终端缓冲区?

4

3 回答 3

8

我跑了strace reset,在接近尾声时看到了这个:

nanosleep({1, 0}, 0x7fffe32053e0)       = 0

所以它在发送所有终端重置代码后故意等待一秒钟,可能是因为某些终端需要时间来处理所有事情。

您应该不需要reset经常使用(仅当全屏程序异常终止时,它不会自行重置终端),这有什么大不了的?

我不确定“擦除我的终端缓冲区”是什么意思。那不是reset目的。

于 2012-10-04T01:13:41.133 回答
5

reset 使用 clear、rmacs、rmm、rmul、rs1、rs2 和 rs3 参数调用 tput(1)。这会导致 tput 根据 /etc/termcap(对于 GNU 或 BSD tput)或 terminfo 数据库(对于 ncurses tput)中的信息向终端发送适当的重置字符串。当 Linux VC 开始打印“看起来很有趣”的字符时,这个序列似乎足以重置它们。为了更好地衡量,使用 sane 参数调用 stty(1) 以尝试恢复熟模式。

另请参见 clear(1)、stty(1)、tput(1)

于 2012-10-04T01:16:06.333 回答
2

如果您只想清除终端缓冲区,可以查看clear(1)命令。

clear(1)手册页的摘录:

NAME
   clear - clear the terminal screen

SYNOPSIS
   clear

DESCRIPTION
   clear clears your screen if this is possible.  It looks in
   the environment for the terminal type and then in the 
   terminfo database to figure out how to clear the screen.
   ...
于 2012-10-04T01:21:21.210 回答