我知道clear
可以“清除”当前屏幕的命令,但是它只是通过打印许多换行符来完成的-清除的内容只是向上滚动。
有没有办法完全清除终端上所有以前的输出,以便即使向上滚动也无法到达?
Command+K
。
我知道clear
可以“清除”当前屏幕的命令,但是它只是通过打印许多换行符来完成的-清除的内容只是向上滚动。
有没有办法完全清除终端上所有以前的输出,以便即使向上滚动也无法到达?
Command+K
。
Answers:
⌘+K
Command+ K适用于较新的键盘
/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'
clear
所有情况,除非您需要回滚历史记录实际消失,例如要打印时。)
clear
。我觉得他们应该被扭转。打字clear
似乎比敲击更有意Command + K
。
如果您使用的是OSX Terminal应用程序(如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'
...但是当它不是当前窗口时,输出将堆叠起来直到再次变为当前窗口,这可能不是您想要的。
.bash_profile
,它很棒,因为在打开新的终端窗口时,有时不再会出现故障缓冲区。
漂亮的方法是 printf '\33c\e[3J'
alias cls='printf "\33c\e[3J"'
\33c
执行与clear
命令等效的命令,该命令基本上只是滚动屏幕,直到看不到它的先前内容为止。它会清除屏幕,但不会清除后退缓冲区(即,您仍然可以使用滚动条查看旧的输出)。添加\e[3J
以实际清除向后滚动缓冲区。
function cls { printf '\33c\e[3J\33c' }
在~/.profile
(或系统范围内/etc/profile
)添加行。这应该适用于macOS,FreeBSD,Linux等中的桌面环境。请注意,这\33c
是用于清除\e[3J
非macOS中的多余文字(基本上对于Linux / FreeBSD,我们只需要printf '\33c'
)。
把它放在你的.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的Keyboard快捷键重新分配它。只需使用“ Clear Scrollback”命令为Terminal添加新的快捷方式。(我使用CMD+ L,因为它类似于CTRL+,L以清除当前屏幕内容,而不清除缓冲区。)
不知道如何在脚本中使用它(也许就像其他人指出的那样是AppleScript)。
View->Clear Scrollback
在终端的菜单中不再存在。键盘快捷键CMD
+ K
仍然可以使用。
Clear Scrollback
从刚搬到View
到Edit
优胜美地。
⌘+L
⌘+K
clear && printf '\e[3J'
清除所有内容,在osX上也能很好地工作。井井有条
我无法在MacOS上执行上述任何操作。
一种组合对我有用-
IO.write "\e[H\e[2J\e[3J"
这将清除缓冲区和屏幕
IO.write
。它应该工作相同,但是您决定将这些字符打印到终端上。
在终端中键入以下内容将清除您的历史记录(意味着使用向上箭头将无助您)-但不会清除屏幕:
history -c