该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
Run Code Online (Sandbox Code Playgroud)
Tho*_*key 27
真正的(硬件)终端需要那个。例如,对于某些,重置它们的唯一方法是进行硬件重置。
它对终端模拟器无害,并且由于没有传统的方法来区分差异(并且很难确定某些转义序列是否可以进行硬件重置),因此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 */
}
Run Code Online (Sandbox Code Playgroud)
它在 ncurses 中有所发展,但使用相同的准则:
if (!noinit) {
if (send_init_strings(my_fd, &oldmode)) {
(void) putc('\r', stderr);
(void) fflush(stderr);
(void) napms(1000); /* Settle the terminal. */
}
}
Run Code Online (Sandbox Code Playgroud)
进一步阅读: