如何清除Mac OS X中终端的先前输出?

时间:2010-02-04 09:00:46

标签: macos shell buffer clear

我知道'{1}}命令'清除'当前屏幕,但它只是通过打印大量换行来实现这一点 - 清除的内容只是向上滚动。

有没有办法彻底清除终端上的所有先前输出,以便即使向上滚动也无法覆盖?

14 个答案:

答案 0 :(得分:937)

手动清除终端:

+ ķ

对于较新的键盘,

命令 + K

从shell脚本中清除终端;

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

答案 1 :(得分:66)

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

如果您正在使用OSX终端应用程序(如OP所述),更好的方法(感谢https://apple.stackexchange.com/a/113168)就是这样:

clear && printf '\e[3J'

清除回滚缓冲区。它比运行AppleScript更快。还有其他选项,请参阅https://apple.stackexchange.com/a/113168以获取更多信息。

原始答案

此线程中给出的AppleScript答案有效,但它具有清除碰巧活动的任何终端窗口的令人讨厌的副作用。如果您在一个窗口中运行脚本并尝试在另一个窗口中完成工作,这就太令人惊讶了!

你可以通过改进AppleScript来清除屏幕(如果它是最前面的那样)(从https://apple.stackexchange.com/a/31887中取出)来避免这种情况:

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

...但是当它不是当前窗口时,输出将叠加,直到它再次变为当前状态,这可能不是你想要的。

答案 2 :(得分:46)

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

答案 3 :(得分:33)

将它放在.bash_profile或.bashrc

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

答案 4 :(得分:19)

在Mac OS X终端上,此功能已作为View->Clear Scrollback内置于终端应用程序中(默认为 CMD + K )。

因此,您可以使用Apple的键盘快捷键重新分配此项。只需使用“Clear Scrollback”命令为Terminal添加新的快捷方式即可。 (我使用 CMD + L ,因为它类似于 CTRL + L 来清除当前屏幕内容,没有清除缓冲区。)

不确定如何在脚本中使用它(可能是其他人指出的AppleScript)。

答案 5 :(得分:10)

使用Mac OS X Yosemite(10.10)使用Option + Command + K清除Terminal.app中的回滚。

答案 6 :(得分:8)

或者您可以按:

发送page break(ASCII换页)
CTRL+L

虽然这在技术上只是开始一个新页面,但它具有与所有其他方法相同的净效果,同时速度更快(当然除了Apple + K解决方案)。

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

答案 7 :(得分:5)

clear && printf '\e[3J'

清除所有内容,也适用于osX。非常整洁

答案 8 :(得分:3)

在终端中键入以下内容将擦除您的历史记录(意味着使用向上箭头将无法获取任何内容) - 但不会清除屏幕:

history -c

答案 9 :(得分:3)

做正确的事,做正确的事!

清除上一个标记: Command-L

清除上一个书签: Option-Command-L

清除开始: Command-K

帮助您!

答案 10 :(得分:1)

我无法使用上述任何功能(在macOS上)。

一个组合对我有用 -

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

这会清除缓冲区和屏幕

答案 11 :(得分:0)

Command + K 将清除先前的输出

要清除输入的文本,请先使用“ Command + A ”向左跳转,然后使用“ Control + K ”将指针右侧的文本清除。

视觉示例: enter image description here

答案 12 :(得分:0)

仅删除最后一个输出:

+ L

要完全清除终端:

+ K

答案 13 :(得分:-4)

CMD + K似乎一直对我有用。