该reset
命令包括清除屏幕和返回之间的延迟。即使在最新的终端类型上也是如此xterm-256color
。为什么?
man reset
没有提到延迟,只提到特殊字符串的打印。 (它也没有提到清除屏幕。我认为这包含在终端初始化字符串中)。
我注意到以下输出strace -f reset
:
nanosleep({tv_sec=1, tv_nsec=0}, 0x7ffe1964f100) = 0
ioctl(2, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig icanon echo ...}) = 0
答案1
真实的(硬件)终端需要它。例如,对于某些设备,重置它们的唯一方法是进行硬件重置。
这对于终端模拟器来说是无害的,并且由于没有传统的方法来区分(并且很难确定某些转义序列是否可能进行硬件重置),reset
因此假设您的终端是真实的。
时间延迟可以追溯到tset
1979 年的 3BSD,如下所示:
/* output startup string */
if (!RepOnly && !NoInit)
{
bufp = buf;
if (tgetstr("is", &bufp) != 0)
prs(buf);
bufp = buf;
if (tgetstr("if", &bufp) != 0)
cat(buf);
sleep(1); /* let terminal settle down */
}
它在 ncurses 中有所发展,但使用相同的准则:
if (!noinit) {
if (send_init_strings(my_fd, &oldmode)) {
(void) putc('\r', stderr);
(void) fflush(stderr);
(void) napms(1000); /* Settle the terminal. */
}
}
进一步阅读: