如何清除BASH中的整个终端,如命令提示符的cls
命令?
clear
不起作用,因为它实际上没有清除任何内容,它只是向下滚动。
答案 0 :(得分:33)
据我所知,没有办法比clear
对bash做的更好。
我认为这是一个可以构建到您正在使用的终端中的功能。我知道Mac Terminal应用程序有一个'Clear Scrollback'菜单选项(命令+ k)可以满足您的要求。
答案 1 :(得分:29)
为什么不尝试 Ctrl + l (控制,小写“L”)。这适用于大多数shell(错误终端)......
在OSX终端 -
命令⌘ + l (command,l)导致从显示中删除最后输入的命令。
命令⌘ + k (命令,k)导致删除/清除所有显示缓冲区。
reset
(在终端中键入此内容)会导致终端重置,以防显示变得乱码。
不确定其他unix口味的等效物。
答案 2 :(得分:14)
回滚缓冲区不是bash的功能,而是终端程序的功能。你没有说你正在使用什么终端程序。
https://superuser.com/questions/122911/bash-reset-and-clear-commands
答案 3 :(得分:14)
xterm
将允许转义序列ESC [3J
清除回滚,所以你可以这样做:
alias cls="clear; printf '\033[3J'"
答案 4 :(得分:9)
使用⌘ + K 。它会删除条目,因此我无法向上滚动。
所以⌘ + K 清除所有内容,包括滚动。 Ctrl + L 清除终端窗口,但在向上滚动时仍能看到所有内容。
答案 5 :(得分:2)
简短回答
clear && clear
或
tput reset
其他方式
以下是在Unix中清除终端屏幕的所有方法:
clear # only clear visible screen
clear && clear # clear buffer as well
tput clear # same as clear but by sending escape seq
reset # clear + reset internal terminal state + 1sec delay
tput reset # same as reset but without 1sec delay
stty sane # don't clear screen but reset some terminal options
echo -e "\033c" # same as tput reset but hardcoded escape seq
printf "\033c" # same as tput reset but hardcoded escape seq
setterm -reset # same as tput reset, setterm has friendlier commands
长期回答
clear
命令仅清除可见屏幕,但不清除缓冲区,因此您可以执行Shift+PageUp
在终端中向上滚动并仍然查看先前的输出。如果要获得与cls
相同的结果,请像clear && clear
一样清除两次。
另一个相关的命令是reset
(我相信)可以重置终端程序的内部状态。不幸的是,此命令包括1秒的延迟以支持真正的旧终端。因此,如果您对这种延迟不满意,请使用tput reset
,它似乎和reset减去延迟一样。
但是tput
的作用是什么?在Unix中,您可以向终端发送各种ASCII字符序列,这些字符被终端解释为命令。这使您可以做一些时髦的事情,例如眨眼或给文本上色,或者关闭回显(在输入密码时)或设置终端选项,或者清除或重置。您可以通过tput clear
或tput reset
发送。 clear
和reset
命令是等效的,但是它们从发行版随附的二进制文件运行,并且可能会做其他事情。 setterm -reset
与tput reset
类似。使用setterm
设置终端通常会更好,因为与tput
相比,它在一般情况下具有更多可读性选项,但是我们在这里使用tput因为它的长度更短:)。
您可能还看到人们使用echo -e "\033c"
或printf "\033c"
之类的东西,它们等效于tput reset
,但是转义序列现在已被硬编码。 tput
查找终端属性并使用正确的转义序列。
另一个相关的命令是stty sane
,它实际上不清除任何屏幕,但它sets many of the terminal options默认为默认值,因此如果您的终端看起来乱码或键入时终端保持空白(例如,将二进制文件打印到带有转义序列的终端以关闭回显),则此命令可能会有所帮助。对于极端乱码的终端盒,您可以按顺序使用所有可用的重置技术。在这种情况下,我会使用这样的别名:
alias cls='tput reset'
alias clshard='reset; stty sane; tput rs1; setterm -reset; tput reset'
相关
What's the equivalent of the “cls” command from Windows/DOS?