2012-10-04 96 views
7

控制檯命令reset(1)是,我覺得太慢了。在我的機器上,需要1秒鐘的時間才能執行。Linux命令重置(1)慢

這是爲什麼?它能做得快嗎?或者,是否有另一個命令可以清除我的終端緩衝區?

+0

你關閉我的問題是題外話,雖然這是我的一個實際使用的問題。即使詢問爲什麼重置速度很慢可能會有點有趣,但問我如何清除終端緩衝區肯定不是。 – nccc

回答

5

我跑strace reset,看到這個接近尾聲:

nanosleep({1, 0}, 0x7fffe32053e0)  = 0 

因此它刻意等待第二發送所有的終端復位代碼之後,可能是因爲一些終端需要時間來處理一切。

你不應該經常需要使用reset(只有當全屏程序異常終止,所以它不會重置終端本身),爲什麼這是一個大問題?

我不確定您的意思是「擦除我的終端緩衝區」。這不是reset

+2

也許這不是「重置」的目的,但我不知道其他命令可能具有相同的效果。不過謝謝,這種解釋爲什麼它很慢。 – nccc

+1

這很重要,因爲在某些窗口終端仿真器中編程時,我經常使用'reset',例如侏儒末端。我經常需要清理我的屏幕,但也一直刪除終端緩衝區。 – nccc

+0

這解釋了爲什麼在某些極少數情況下,它會在終端中留下垃圾。它清除屏幕,然後出現一些終端代碼,然後我得到提示。 –

5

使用clear,rmacs,rmm,rmul,rs1,rs2和rs3參數重置調用tput(1)。這會導致tput基於/ etc/termcap(對於GNU或BSD輸出)或terminfo數據庫(對於ncurses輸入)中的信息向終端發送適當的重置字符串。當他們開始打印「看起來好看」的字符時,這個序列似乎足以重置Linux VC。爲了更好的衡量,stty(1)被調用,並使用相同的參數嘗試返回熟化模式。

參見(1)清楚,stty的(1),tput的(1)

+3

似乎'輸入重置'爲我完成這項工作,毫不拖延。 –

+0

從tput(1):''如果tput被一個名爲reset的鏈接調用,這與tput reset.''的效果相同,在我的home bin創建一個從'tput''到'reset'的符號鏈接文件夾做了伎倆。謝謝。 –

0

如果你只是想清除終端緩衝區,你可以看看clear(1)命令。

clear(1)手冊頁的摘錄:

NAME 
    clear - clear the terminal screen 

SYNOPSIS 
    clear 

DESCRIPTION 
    clear clears your screen if this is possible. It looks in 
    the environment for the terminal type and then in the 
    terminfo database to figure out how to clear the screen. 
    ... 
+1

clear(1)清除終端中可見的字符矩形,而不是整個終端緩衝區。如此清楚(1)並不總是足夠的 – porton