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

我知道清除当前屏幕的clear命令,但它只是通过打印大量换行符来完成 - 清除的内容只是滚动上去。

是否有办法彻底清除终端上的所有输出,以至于即使通过滚动也无法触及它?


手动清除终端:

⌘+ K

Command + K用于较新的键盘

从shell脚本中清除终端;

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

更好的方法...

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

clear && printf 'e[3J'

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

原始答案

在这个线程中给出的AppleScript答案的作品,但它有清除ANY终端窗口碰巧活跃的讨厌副作用。 如果您在一个窗口中运行脚本并尝试在另一个窗口中完成工作,这是令人惊讶的!

您可以通过改进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'

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


漂亮的方式是printf '33ce[3J'

链接地址: http://www.djcxy.com/p/49361.html

上一篇: How to clear previous output in Terminal in Mac OS X?

下一篇: Fastest way(s) to move the cursor on a terminal command line?