Linux控制台终端的清屏操作方式
在使用Linux终端时,难免会遇到有时候会输出大量的内容,特别是在编译软件的时候,特别特别是在使用GCC的时候。GCC居然没法输出带有颜色的编译信息,满屏的警告、注意、错误交织在一起,简直让人蛋碎,花费了大量时间去找真正的错误所在行。。。
一直在 Ubuntu 终端上使用 clear
命令 “清屏”,但我发现我被愚弄了。因为 clear
命令但不是真正的清屏,它只是把终端的提示符所在的行滚动到了屏幕的最上面,所以,看似屏幕是被清空了,实但没有,滚动条往上面一滚,内容就又全部摆在眼前了,有个蛋用啊!但我居然还用了几个月的此命令!今天写下这篇文章,极有可能是因为我受不了了。
完整列表
Julia Evans 通过 terminfo 数据库列出了针对不同终端模拟器的不同命令,参看这里:Standards for ANSI escape codes。
解决方案
Google了一番发现,不同版本 Linux 的 Distribution 的操作方式并不通用。而我使用的是 Ubuntu,所以其它的我就不能测试了,但依然可以列出来让大家试试。
这些方法都来自于 StackOverflow
上的一个问答。
用 printf 终端重置控制字符
清屏
这种方法的原理是很好理解的:Linux的终端的底层支持控制字符(别以为很神奇,你应该知道 '\n'
能控制换行吧?知道就好,类似了。)。
1
|
|
八进制的转义字符 \033
就是十六进制的 \x1b
,就是十进制的27,也就是ASCII码为27的字符:ESC!
ESC字符属于控制字符所在范围(0 ~ 31),而控制序列 <ESC>c
的作用就是重围终端,这下明白了吧?更多的控制序列参考文后的外部链接。
其它版本:
1 2 3 4 |
|
用 reset
命令
这个命令蛮简洁,效果也蛮好。
1
|
|
用 tput
命令
这个命令不太了解(还有那个 tset
,靠,命令不少,相似的命令也不少),但有效果:
1
|
|
KDE 终端
很意外,上面的操作貌似都不能在KDE终端(Konsole)上工作,但可以使用下面的命令来代替:
1
|
|
PuTTY
貌似上面的方法都没法在 PuTTY
上面工作。但可以在设置中设置快捷键(暂时没用Putty,以后再补上;这不是坑!)。
笨人笨方法
看到这个方法,也许大家都笑了,但这个方法确实有“一定”的效果!
1 2 3 4 5 6 7 8 9 10 11 |
|
但看得出来,楼主对 linux 的 seq命令 不熟,下面是 seq 的实现:
1
|
|
设置命令别名
如果 reset 命令不能工作,而又要输入长长的 printf,不妨为命令设置一个简短的别名吧:
$ vim ~/.bashrc
- 加入一行:
alias cls='printf "\033c"'
- 保存并退出
- 立即生效:
source ~/.bashrc