`clear`、`clear_console`、`tput clear` 等之间有什么区别?

`clear`、`clear_console`、`tput clear` 等之间有什么区别?

我在默认的 bash_logout 中注意到了这一点:

if [ "$SHLVL" = 1 ]; then
    [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi

我很好奇为什么它不直接使用clear.谷歌搜索并没有启发我,但它确实向我展示tput cleartput reset

清除屏幕的各种选项之间有什么区别?

答案1

在我的 debian 系统上,/usr/bin/clear/usr/bin/tput是软件包的一部分ncurses-bin/usr/bin/clear_console是软件包的一部分bash

为什么默认情况下应该.bash_logout假设该ncurses-bin软件包已安装?

另外,如果从 Linux 虚拟终端(而不是从串行或伪 tty)运行,clear_console(1)也会清除回滚缓冲区(除了发送clear/ clterminfo 转义之外)。

它将通过来回切换到另一个 vt [1] 并发送\e[3J “刷新回滚”逃脱。

在较新的系统上,clear也会tput clear发送该\e[3J转义(但在许多仍在使用的发行版上不会,例如 Centos 7 或 Debian 9 - 在后者上,TERM环境变量应设置为linux3.0,这不是默认值)。

查看来源clear_console 这里

[1] 可能会被击败vgacon.scrollback_persistent=1启动参数,如果您的内核是使用VGACON_SOFT_SCROLLBACK选项(“在系统 RAM 中启用回滚缓冲区”)编译的。

相关内容