看來clear
和 bash Ctrl-L是有很大不同的;clear
完全刪除以前的所有終端資訊(因此您無法向上滾動) while Ctrl-L只是滾動螢幕,使遊標位於頁面頂部,以便您仍然可以向上滾動並查看以前的資訊。我更喜歡Ctrl-L系統。有沒有辦法覆蓋clear
,以便它執行Ctrl-L而不是擦除所有以前的終端資訊?這不是一個大問題,但我只是出於好奇而想知道是否有一種方法可以使用別名clear
來指向我喜歡的Ctrl功能L。
順便說一句,我剛剛注意到 PowerShell 也有一個綁定Ctrl-L並且它的執行方式與Ctrl-L在 bash 上相同;看起來 PowerShell 設計者從 bash 中藉鑒了很多,而cmd.exe
控制台沒有這個功能。
答案1
有沒有辦法覆蓋清除,以便它執行 Ctrl-L 而不是擦除所有先前的終端資訊?
alias clear='tput -x clear'
是的,Ctrl-L
在 bash 中(在模式下set -o emacs
)做完全相同的事情。
或者,您可以只是硬連線轉義,alias clear='printf "\033[H\033[2J"'
它應該在大多數終端模擬器中工作,並且不假設您已經ncurses
或bash
安裝了。
注意:clear
busybox 中的小程式不會擦除回滾緩衝區,因此如果您使用某些基於 busybox 的系統(就像大多數嵌入式 Linux 系統一樣),則無需執行任何特殊操作。
答案2
clear
是一個終端指令,摘錄如下man clear
:
clear
如果可能的話, 描述 將清除您的螢幕,包括其回滾緩衝區(如果定義了擴展的「E3」功能)。clear
在環境中尋找由環境變數 TERM 指定的終端機類型,然後在 terminfo 資料庫中決定如何清除螢幕。clear
寫入標準輸出。您可以將標準輸出重定向到一個檔案(這會阻止clear實際上清除螢幕),然後將cat
檔案重定向到螢幕,並在此時清除它。
Ctrl+l是一個鍵綁定readline
的clear-screen
命令( man 3 readline
)。
清空螢幕,然後重新繪製目前行,將目前行保留在螢幕頂部。使用參數時,刷新目前行而不清除螢幕。
我找不到clear
readlineclear-screen
命令起別名的方法,而且可能根本不可能。