如何在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'
上一篇: How to clear previous output in Terminal in Mac OS X?
下一篇: Fastest way(s) to move the cursor on a terminal command line?