我可以讓clear指令的行為類似Bash中的Ctrl-L嗎?

我可以讓clear指令的行為類似Bash中的Ctrl-L嗎?

看來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"'它應該在大多數終端模擬器中工作,並且不假設您已經ncursesbash安裝了。

注意:clearbusybox 中的小程式不會擦除回滾緩衝區,因此如果您使用某些基於 busybox 的系統(就像大多數嵌入式 Linux 系統一樣),則無需執行任何特殊操作。

答案2

clear是一個終端指令,摘錄如下man clear

clear 如果可能的話, 描述 將清除您的螢幕,包括其回滾緩衝區(如果定義了擴展的「E3」功能)。clear在環境中尋找由環境變數 TERM 指定的終端機類型,然後在 terminfo 資料庫中決定如何清除螢幕。 clear寫入標準輸出。您可以將標準輸出重定向到一個檔案(這會阻止clear實際上清除螢幕),然後將 cat 檔案重定向到螢幕,並在此時清除它。

Ctrl+l是一個鍵綁定readlineclear-screen命令( man 3 readline)。

清空螢幕,然後重新繪製目前行,將目前行保留在螢幕頂部。使用參數時,刷新目前行而不清除螢幕。


我找不到clearreadlineclear-screen命令起別名的方法,而且可能根本不可能。

相關內容