2011-05-17 131 views
5

我想以編程方式清除Linux控制檯VT上的回滾緩衝區。即不只是清除當前的可見屏幕,而是整個回滾緩衝區。即使用Alt-PgUp仍然可以看到清晰屏幕後的所有內容都應該消失。有人知道如何在漂亮的代碼中實現這一點?清除Linux虛擬控制檯終端的回滾緩衝區

+5

警告:此用戶是反對票快樂,回答這裏後果自負。 – 2011-05-17 20:53:44

+2

@richard:我喜歡過着危險的生活。 – ninjalj 2011-05-18 00:03:10

回答

6

我不認爲這是主線還,但linux-next有一個補丁,以支持新的控制檯轉義序列是清除屏幕滾動緩衝區:CSI 3 J

的東西,而無需升級你的內核工作,你可以使用:

chvt 42; chvt <current tty no>; echo -en "\e[1;1H\e[2J" 

或者:

echo -e "\e[12;42]"; sleep .01; echo -en "\e[12;<current tty no>]\e[1;1H\e[2J" 

你可以得到當前TTY號碼:

$(ls -l /proc/self/fd | sed -ne 's/.*tty//p') 
+0

謝謝,這就是我一直在尋找的! – user175104 2011-05-19 11:14:22

+0

看來,只是'echo -en「\ e [3J」'現在起作用了。 – 2014-01-22 07:59:51

+0

@ edA-qamort-ora-y:是,'\ e ['是7位'CSI'。 – ninjalj 2014-01-22 09:47:03

1

請記住,其他工具(例如ssh)將有不同的「回滾緩衝區」實現。我非常懷疑你可以用機器中的代碼清理膩子緩衝區。 另請參閱https://superuser.com/questions/122911/bash-reset-and-clear-commands

+0

不錯的參考鏈接,thx – sehe 2011-05-17 20:44:31

+1

我只關心Linux *控制檯虛擬終端*。沒有其他的。 – user175104 2011-05-17 20:47:08

+0

@ user175104你沒有在問題中指定,但足夠公平 – Mr47 2014-01-28 07:34:27