tty 下,我这里 Ctrl-L、reset 均有效。Xfce 终端下 echo "\033[r\033[H\033[J" 有效。tmux 下均无效。
有效也只是清除当前屏幕而已,你按下 Shift + PageUp 看看,是不是还有内容!除非你 Alt + 2 切换到别的 tty 再切换回来。
离线
百合仙子 说:tty 下,我这里 Ctrl-L、reset 均有效。Xfce 终端下 echo "\033[r\033[H\033[J" 有效。tmux 下均无效。
有效也只是清除当前屏幕而已,你按下 Shift + PageUp 看看,是不是还有内容!除非你 Alt + 2 切换到别的 tty 再切换回来。
Shift + PageUp 不動的哦。
离线
在debian那边找到了这条函数。
int clear_console(int fd)
{
int num, tmp_num;
#if defined(__linux__)
struct vt_stat vtstat;
#endif
/* clear screen */
setupterm((char *) 0, 1, (int *) 0);
if (tputs(clear_screen, lines > 0 ? lines : 1, putch) == ERR)
{
exit(1);
}
if (is_pseudo_tty(STDIN_FILENO))
return 0;
if (!strcmp(getenv("TERM"), "screen"))
return 0;
/* get current vt */
#if defined(__linux__)
if (ioctl(fd, VT_GETSTATE, &vtstat) < 0)
#elif defined(__FreeBSD_kernel__)
if (ioctl(fd, VT_ACTIVATE, &num) < 0)
#endif
{
if (!quiet)
fprintf(stderr, "%s: cannot get VTstate\n", progname);
exit(1);
}
#if defined(__linux__)
num = vtstat.v_active;
#endif
tmp_num = (num == 1 ? 2 : 1);
/* switch vt to clear the scrollback buffer */
if (ioctl(fd, VT_ACTIVATE, tmp_num))
{
if (!quiet)
perror("chvt: VT_ACTIVATE");
exit(1);
}
if (ioctl(fd, VT_WAITACTIVE, tmp_num))
{
if (!quiet)
perror("VT_WAITACTIVE");
exit(1);
}
/* switch back */
if (ioctl(fd, VT_ACTIVATE, num))
{
if (!quiet)
perror("chvt: VT_ACTIVATE");
exit(1);
}
if (ioctl(fd, VT_WAITACTIVE, num))
{
if (!quiet)
perror("VT_WAITACTIVE");
exit(1);
}
return 0;
}
reset的确是会留下一行,但你用得着那么严谨吗?
小白路过,大家给点面子!
离线
离线
难道不知道c-l么?
just for fun :-)
离线
离线
终于碰见个我会的,Ctrl+c
离线
嗯,楼上好建议,楼下说是不是?
小白路过,大家给点面子!
离线
lx 表示吐血了
离线
楼上威武
没看懂。
just for fun :-)
离线