清除终端屏幕
命令语法格式
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 创建文章