我知道clear命令“清除”当前屏幕,但它只是通过打印大量换行来做到这一点-清除的内容只是向上滚动。
clear
是否有一种方法可以完全擦除终端之前的所有输出,以至于我即使向上滚动也无法到达它?
# EYZ0 + # EYZ1
命令+K用于较新的键盘
/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'
在终端中输入以下内容将擦除你的历史(意思是使用向上箭头不会得到任何东西),但它不会清除屏幕:
history -c
把这个放在你的. bash_profile或. bashrc文件中:
function cls { osascript -e 'tell application "System Events" to keystroke "k" using command down' }
或者您可以通过按Ctrl + l发送分页符 (ASCII表单提要)。
虽然从技术上讲,这只是启动一个新页面,但这与所有其他方法具有相同的净效果,同时速度要快得多(当然,除了苹果 + K解决方案)。
因为这是一个ASCII控制命令,它适用于所有shell。
在Mac OS X终端上,这个功能已经内置到终端应用程序的菜单视图→明确Scrollback(默认是CMD + K)。
你可以用苹果的键盘快捷键重新分配它。只需为终端添加一个新的快捷方式,使用命令“清除回滚”。(我使用CMD + l,因为它类似于Ctrl + l来清除当前屏幕内容,而不清除缓冲区。)
我不确定你会如何在脚本中使用这个(可能是AppleScript,因为其他人已经指出)。
如果你正在使用OS X终端应用程序(正如OP所述),一个更好的方法(感谢Chris Page对的回答我如何通过shell命令重置终端中的屏幕?< / em >)是这样的:
clear && printf '\e[3J'
或者更简单地说(向用户 qiyi 致敬):
printf '\33c\e[3J'
它会清除屏幕上的滚动缓冲区。还有其他的选择。有关更多信息,请参阅Chris Page对的回答我如何通过shell命令重置终端中的屏幕?< / em >。
AppleScript给出的答案在这个线程工作,但它有讨厌的副作用,清除任何终端窗口,碰巧是活跃的。如果您在一个窗口中运行脚本,而试图在另一个窗口中完成工作,这是令人惊讶的!
你可以通过细化AppleScript来避免这种情况,如果它是最前面的,你可以这样做(摘自MattiSG对的回答如何通过shell命令重置终端中的屏幕?< / em >):
osascript -e 'if application "Terminal" is frontmost then tell application "System Events" to keystroke "k" using command down'
... 但是,当它不是当前窗口时,输出将堆叠起来,直到它再次成为当前窗口,这可能不是您想要的。
使用Mac OS X v10.10 (Yosemite),使用选项 + 命令 + K清除Terminal.app中的屏幕。
漂亮的方法是printf '\33c\e[3J'
清除所有东西,它在OS X上也能很好地工作。非常整洁。
我不能得到任何以前的答案工作(macOS)。
一个组合对我有用——
IO.write "\e[H\e[2J\e[3J"
这将清除缓冲区和屏幕。
CMD + K适用于macOS。它清除整个终端输出,但环境仍然存在。
命令 + K将清除之前的输出。
要清除输入的文本,首先用命令 + 一个向左跳转,然后用控制 + K清除指针右侧的文本。
可视化例子:
做正确的事;把事情做好!
清除到前面的标记:命令 + l
清除到以前的书签:选项+ 命令 + l
清除开始:命令 + K
# eyz0 + # eyz1