我知道“清除”当前屏幕的清除命令,但它只是通过打印大量换行来做到这一点-清除的内容只是向上滚动。

是否有一种方法可以完全擦除终端之前的所有输出,以至于我即使向上滚动也无法到达它?


手动清除终端。

⌘+K

Command+K用于较新的键盘

从shell脚本中清除终端;

/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'

在终端中输入以下内容将删除你的历史记录(这意味着使用向上箭头将一无所获),但它不会清除屏幕:

history -c

把它放在你的.bash_profile或.bashrc文件中:

function cls {
    osascript -e 'tell application "System Events" to keystroke "k" using command down'
}

或者您可以通过按Ctrl + L发送换行符(ASCII表单提要)。

虽然从技术上讲,这只是启动一个新页面,但这与所有其他方法具有相同的净效果,同时速度要快得多(当然,Apple + K解决方案除外)。

因为这是一个ASCII控制命令,它适用于所有shell。


在Mac OS X终端上,这个功能已经内置到终端应用程序的菜单视图→清除屏幕(默认是CMD + K)。

你可以用苹果的键盘快捷键重新分配它。只需添加一个新的终端快捷方式与命令“清除屏幕”。(我使用CMD + L,因为它类似于Ctrl + L来清除当前屏幕内容,而不清除缓冲区。)

我不确定你会如何在脚本中使用这个(可能是AppleScript,因为其他人已经指出)。


从脚本中清除屏幕的更好方法…

如果你正在使用OS X终端应用程序(正如OP所述),一个更好的方法(感谢Chris Page对如何通过shell命令重置终端中的屏幕的回答?)就是:

clear && printf '\e[3J'

或者更简单地说(向用户qiyi致敬):

printf '\33c\e[3J'

它会清除屏幕上的滚动缓冲区。还有其他的选择。参见Chris Page对如何通过shell命令重置终端中的屏幕的回答?获取更多信息。

原来的答案

AppleScript在这个线程中给出的答案是有效的,但它有一个讨厌的副作用,即清除任何恰好处于活动状态的终端窗口。如果您在一个窗口中运行脚本,而试图在另一个窗口中完成工作,这是令人惊讶的!

你可以通过细化AppleScript来避免这种情况,只清除屏幕如果它是最前面的,通过这样做(从MattiSG的回答如何通过shell命令重置终端中的屏幕?):

osascript -e 'if application "Terminal" is frontmost then tell application "System Events" to keystroke "k" using command down'

... 但是,当它不是当前窗口时,输出将堆叠起来,直到它再次成为当前窗口,这可能不是您想要的。


在Mac OS X v10.10 (Yosemite)中,使用Option + Command + K清除Terminal.app中的屏幕。


漂亮的方法是printf '\33c\e[3J'


clear && printf '\e[3J'

清除所有东西,它在OS X上也能很好地工作。非常整洁。


我不能得到任何以前的答案工作(macOS)。

一个组合对我有用——

IO.write "\e[H\e[2J\e[3J"

这将清除缓冲区和屏幕。


CMD + K适用于macOS。它清除整个终端输出,但环境仍然存在。


Command + K将清除之前的输出。

要清除输入的文本,首先用Command + A跳转到左边,然后用Control + K清除指针右边的文本。

可视化例子:


做正确的事;把事情做好!

清除上一个标记:命令+ L

清除到以前的书签:选项+命令+ L

可以开始:Command + K


删除最后一个输出:

⌘ + L

清空终端:

⌘ + K


将以下内容添加到配置文件中将获得执行此操作的新命令。

alias clearwipe='printf "\33c\e[3J"'

重新加载后,clearwipe将是一个新命令,它将完全擦除终端上的所有先前输出,这样即使向上滚动也无法到达它。