「clear(1)」-

清除终端屏幕

命令语法格式

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 创建文章