問題描述
我可以發出clear
命令或按Ctrl
+ L
清除當前的Ubuntu終端,但這隻是向上移動以前的輸出,如果使用鼠標滾動或PgUP
和PgDown
鍵,很難區分前一個命令的輸出結束和輸出當前命令開始。
有沒有辦法真正清除終端,所以我不會看到以前的命令結果?
最佳解決方法
是的,你正在尋找的命令是
reset
與clear
或Ctrl
+ L
相反,reset
實際上完全是re-initialise terminal,而不是僅僅清除屏幕。但是,它不會re-instantiate shell(bash)。這意味著bash的狀態與以前一樣,就好像你隻是清理屏幕一樣。
正如@Wallacoloo在評論中提到的那樣,這個命令應該更快地做同樣的事情:
tput reset
從其他答案:
-
正如towolf所解釋的那樣,您可以將終端的鍵盤快捷鍵設置為
reset
。 -
如果您運行的是Kubuntu,並且您的終端是Konsole,則需要轉到編輯→清除曆史記錄,因為
reset
在那裏的工作方式與as UncleZeiv notes不同。
次佳解決方法
我正在尋找這一段時間,我發現一些天才發布了這個:
clear && printf '\e[3J'
清除整個屏幕緩衝區,非常幹淨。在OSX上工作,並認為它在大多數* nix終端上工作正常。
我希望有人發現像我一樣有用:)
第三種解決方法
您也可以通過編輯→鍵盤快捷鍵在gnome-terminal中分配快捷鍵。我使用Shift
+ Ctrl
+ Alt
+ C
。
第四種方法
運行這個命令:
reset
這與啟動新終端的效果相同。
第五種方法
交叉發布我的答案stackoverflow。
使用下麵的命令來做一個清晰的屏幕,而不是僅僅添加新行……
printf "\033c"
是的,這是在bash提示符下的’printf’。
你可能想要定義一個別名,盡管…
alias cls='printf "\033c"'
Explanation
\033 == \x1B == 27 == ESC
所以這成為<ESC>c
這是用於重置終端的VT100轉義碼。 Here是關於終端轉義碼的更多信息。
Edit
這裏有一些其他的做法…
printf "\ec" #\e is ESC in bash
echo -en "\ec" #thanks @Jonathon Reinhart.
# -e Enable interpretation of of backslash escapes
# -n Do not output a new line
KDE
以上不適用於KDE控製台(稱為Konsole),但有希望!使用以下命令序列清除屏幕和scroll-back緩衝區…
clear && echo -en "\e[3J"
或者也許在KDE上使用以下別名…
alias cls='clear && echo -en "\e[3J"'
我從here獲得了scroll-back清除命令。
第六種方法
那麽這取決於你是否使用Konsole
,即使reset
也不會阻止你滾動到第一行。在這種情況下,您必須使用您正在使用的特定終端的某些功能。對於Konsole
,它是Edit > Clear History
。
第七種方法
我最喜歡的是printf "\ec"
。這也可以是printf "\033c"
或printf "\x1bc"
。這是一個ansi轉義序列,它奇跡般地清除了終端輸出的屏幕和緩衝區(對於大多數標準終端,我似乎已經工作了 – 我知道它適用於Ubuntu-like Linuxes中的gnome-terminal,終止符,xterm等)
我知道這可以在Linux Mint和Ubuntu 14.04上運行,所以我不知道人們為什麽要追加和預先配置clear && echo -ne "\033c
。 printf "\ec"
一直為我工作。
另外,在我的.bashrc
中,我有這樣的綁定:
bind -x '"\C-t": printf "\ec"';
現在我一直按ctrl
t
。
第八種方法
或者對於reset
,您可以執行echo -e "\033c"
,或者在您的.bashrc
中執行alias cls="echo -ne '\033c'"
UNIX /Linux StackExchange上有一個線程:How to clear terminal completely? (unix.stackexchange.com),以及超級用戶:Clear terminal using keyboard shortcut (superuser.com)。
第九種方法
Hibou57答案的另一種選擇:
# The Octal Way
alias clear="echo -e '\033c\c'"
要麽
# The Hex Way
alias clear="echo -e '\x1b\c'"
基本上這將具有完全相同的效果,它將打印^[
字符(清除您的終端)並且不輸出尾隨的新行。