如何清除Mac OS X中的terminal输出?
我知道“清除”当前屏幕的clear
命令,但是这只是通过打印大量换行符来完成的 – 清除的内容只是滚动而已。
是否有办法彻底清除terminal上的所有输出,以至于即使通过滚动,我也无法达到它?
手动清除terminal:
⌘ + K
Command + K用于较新的键盘
从shell脚本中清除terminal;
/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答案的作品,但它有清除ANYterminal窗口碰巧是积极的讨厌的副作用。 如果您在一个窗口中运行脚本并尝试在另一个窗口中完成工作,这是令人惊讶的!
你可以通过改进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'
…但是,当它不是当前窗口时,输出将叠加,直到它再次成为当前,这可能不是你想要的。
把它放在.bash_profile或.bashrc中
function cls { osascript -e 'tell application "System Events" to keystroke "k" using command down' }
漂亮的方法是printf '\33c\e[3J'
在Mac OS Xterminal上,该function已经内置到terminal应用程序中,如View->Clear Scrollback
(默认为CMD + K )。
所以你可以重新分配这个苹果的键盘快捷键喜欢你喜欢。 只需使用“Clear Scrollback”命令为terminal添加一个新的快捷方式。 (我使用CMD + L ,因为它类似于CTRL + L来清除当前屏幕内容,而不清除缓冲区。)
不知道你将如何在脚本中使用它(可能是别人指出的AppleScript)。
使用Mac OS X Yosemite(10.10)使用Option + Command + K
清除Terminal.app中的回滚。
在terminal:历史-c
或者你可以通过按下来发送一个分页符 (ASCII表单提要):
CTRL+L
虽然这在技术上只是开始一个新的页面,但这与所有其他方法具有相同的净效果,而速度要快得多(当然除了Apple + K解决scheme)。
而且因为这是一个ASCII控制命令,所以它可以在所有shell中运行。
clear && printf '\e[3J'
清除所有内容,在osX上运行良好。 井井有条
我无法得到任何上述工作(在macOS上)。
一个组合为我工作 –
IO.write "\e[H\e[2J\e[3J"
这将清除缓冲区和屏幕