Linux用戶,特別是Ubuntu或CentOS用戶,基本上都習(xí)慣使用clear命令或Ctrl+L組合快捷鍵來清空終端屏幕。但是,這樣做其實(shí)并不是真正的清空屏幕,它只是給人一種錯(cuò)覺,讓人以為屏幕清空了。但當(dāng)用鼠標(biāo)向上滾時(shí),你仍然能看到之前的命令操作留下來的輸出。當(dāng)在處理大量的文本時(shí),這種情況就會(huì)給我們帶來麻煩。
網(wǎng)上能查到很多其它清空屏幕的方法,但基本上都是clear命令的變種。那么,如何能真正的清空屏幕呢?
很巧,我最近發(fā)現(xiàn)了一個(gè)命令,它能徹底的解決我們的問題。
printf “\033c”正是我們需要的命令。它是真正的清空了終端屏幕,它的功能跟DOS里CMD.EXE提供的CLS效果很相似。
但這個(gè)命令究竟是做什么的?它的工作原理是什么?
\033 == \x1B == 27 == ESC
于是,這個(gè)命令變成了ESC>c,它是VT-XXX中表示“Full Reset (RIS)”的轉(zhuǎn)義碼?,F(xiàn)今我們使用的所有的終端都是VT兼容的,但如果你發(fā)現(xiàn)自己使用的是一個(gè)非常奇怪的終端,那這個(gè)命令你可能用不了。printf是bash里內(nèi)置的命令,內(nèi)置命令的優(yōu)先級(jí)比其它可執(zhí)行文件要高。
我們還可以使用另外一個(gè)命令,reset,它也是清空終端屏幕,但我們?nèi)匀豢梢允褂蒙舷骆I查看歷史命令。這個(gè)命令的一個(gè)缺點(diǎn)是,它執(zhí)行起來有點(diǎn)慢,也許是因?yàn)樗鼪]有發(fā)送ESC c指令,但這個(gè)命令的兼容性顯然比之前的那個(gè)要好。
reset命令在你的終端控制錯(cuò)亂時(shí)非常有用。你是否遇到過輸入字符不出現(xiàn)在光標(biāo)的位置的情況?當(dāng)你敲擊回車鍵時(shí),新提示符并沒有出現(xiàn)在新行上,而是出現(xiàn)在老提示符的前面?reset命令就是來修正這個(gè)問題的。你在CYGWIN上也能使用這個(gè)命令。