“CLS”等同于BASH?

时间:2011-06-16 04:18:36

标签: bash terminal clear

如何清除BASH中的整个终端,如命令提示符的cls命令?

clear不起作用,因为它实际上没有清除任何内容,它只是向下滚动。

6 个答案:

答案 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 cleartput reset发送。 clearreset命令是等效的,但是它们从发行版随附的二进制文件运行,并且可能会做其他事情。 setterm -resettput 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?

What commands can I use to reset and clear my terminal?