清除终端屏幕
命令语法格式
clear
命令描述
如果可能,命令 clear 清除屏幕,包括其回滚缓冲区(如果定义了扩展的“E3”功能)。清除环境变量中的终端类型,然后在 terminfo 数据库中确定如何清除屏幕。
命令 clear 忽略可能存在的任何命令行参数。
历史
命令 clear 出现在 1979 年 2 月 24 日的 BSD 2.79 中。后来在 Unix 第 8 版(1985)中提供。
AT&T 调整了一个不同的 BSD 程序(tset)来创建一个新命令(tput),并使用它来用一个调用 tput clear 的 shell 脚本替换 clear 命令,例如:
/usr/bin/tput ${1:+-T$1} clear 2> /dev/null
exit
1989 年,当 Keith Bostic 修改了 BSD 的 tput 命令以使其类似于 AT&T 的 tput 时,他为 clear 命令添加了一个 Shell 脚本:
exec tput clear
每种情况下,脚本的其余部分是版权声明。
而 ncurses 的 clear 命令始于 1995 年,它通过调整原始的 BSD 的 clear 命令(当然还有 terminfo)。
随后 E3 扩展来了:
在 1999 年 6 月,xterm 提供了清除屏幕的标准控制序列的扩展。而不是仅使用清除屏幕的可见部分:
printf '\033[2J'
可以使用下述命令清除回滚缓冲:
printf '\033[3J'
这在“XTerm 控制序列”中记录为源自 xterm 的特征。
其他一些终端开发者采用了该功能,例如 2006 年的 PuTTY。
2011 年 4 月,Red Hat 开发人员向 Linux 内核提交了一个补丁,修改了它的控制台驱动程序以执行相同的操作。作为 3.0 版本的一部分,Linux 更改没有提及 xterm,尽管红帽错误报告(#683733)中引用了这一变化导致了这一变化。
再次,一些其他终端开发人员采用了该功能。但下一个相关步骤是在 2013 年对 clear 程序进行了修改,以纳入此扩展。
2013 年,E3 扩展在 tput 中被忽略了“clear”参数。2016 年通过重新组织 tput,来与 clear 和 tset 分享其逻辑以解决这个问题。
可移植性
IEEE Std 1003.1/Open Group Base Specifications Issue 7(POSIX.1-2008)和 X/Open Curses Issue 7 都没有记录 tset 或 reset 文件。
后者记录了 tput,可用于通过 Shell 脚本或别名(如符号链接)替换此实用程序,以将 tput 作为清除运行。
相关手册
tput(1), terminfo(5)
This describes ncurses version 6.0 (patch 20161126).
参考文献
- man 1 clear, Version 6.0+20161126-1
更新日志
- 09/01/2018 创建文章