我知道'{1}}命令'清除'当前屏幕,但它只是通过打印大量换行来实现这一点 - 清除的内容只是向上滚动。
有没有办法彻底清除终端上的所有先前输出,以便即使向上滚动也无法覆盖?
答案 0 :(得分:937)
⌘ + ķ
对于较新的键盘,命令 + K
/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)
答案 12 :(得分:0)
⌘ + L
⌘ + K
答案 13 :(得分:-4)
CMD + K似乎一直对我有用。