[我知道clear
命令会“清除”当前屏幕,但这只是通过打印很多换行符来完成的-清除的内容会向上滚动。
是否有一种方法可以完全清除终端上的所有先前输出,以便即使向上滚动也无法到达它?
⌘ + K
Command + K(对于较新的键盘)
/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'
做正确的事,做正确的事!
在终端中键入以下内容将擦除
您的历史记录(意味着使用向上箭头将不会给您任何帮助)-但不会清除屏幕:history -c
我无法在MacOS上执行上述任何操作。
一种组合对我有用-
IO.write "\e[H\e[2J\e[3J"
⌘
+ L您只需在cmd行中键入clear
:]
CMD + K似乎一直在为我工作。
如果您使用的是OSX终端应用程序(如OP所述,一种更好的方法(多亏https://apple.stackexchange.com/a/113168)就是这样:
clear && printf '\e[3J'
或更简洁地讲(https://stackoverflow.com/users/4834046/qiuyi的提示):
printf '\33c\e[3J'
清除回滚缓冲区以及屏幕。还有其他选项,请参见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'
...但是当它不是当前窗口时,输出将堆叠起来直到再次变为当前窗口,这可能不是您想要的。
漂亮的方法是printf '\33c\e[3J'
将其放入您的.bash_profile或.bashrc中
function cls {
osascript -e 'tell application "System Events" to keystroke "k" using command down'
}
在Mac OS X终端上,此功能已作为View->Clear Scrollback
内置到终端应用程序中(默认为CMD + K)。
因此您可以根据需要使用Apple的键盘快捷键重新分配它。只需使用“ Clear Scrollback”命令为Terminal添加新的快捷方式。 (我使用CMD + L,因为它类似于CTRL + L来清除当前屏幕内容,而不清除缓冲区。)
不知道您将如何在脚本中使用它(也许其他人已经指出了AppleScript)。
在Mac OS X Yosemite(10.10)中,使用Option + Command + K
清除Terminal.app中的回滚。
或者您可以通过以下方式发送page break(ASCII格式的供稿):
CTRL+L
虽然从技术上讲这只是一个新页面,但是它具有与所有其他方法相同的净效果,但速度要快得多(当然,除了Apple + K解决方案之外,还可以。] >>
并且因为这是ASCII控制命令,所以它适用于所有shell。
clear && printf '\e[3J'
Command + K