Answers:
ctrl+ L只需清除终端屏幕。
它等效于命令的键盘快捷键clear -x
。参考
它是的属性bash
,因此您没有在gnome终端的键盘快捷键下找到它。来自man bash
:
clear-screen (C-l)
Clear the screen leaving the current line at the top of the
screen. With an argument, refresh the current line without
clearing the screen.
请参阅Bash键盘快捷键的详细列表。
clear
,因为它不会删除您的终端历史记录,而命令clear
却会删除它,除非您添加-x
参数,例如:clear -x
。
如果您使用的外壳没有拦截它,则您在终端中键入“换页”字符。如果终端应用程序未以某种方式截获或使用按键,则Ctrl+ Letter会转换为负64(1)的ASCII码。65是ASCII码“ A”,“ L”是第12个字母->代码76。如果外壳不知道该怎么做,则将其打印出来。
打印FF字符会在行式打印机上显示一个新页面,并在终端上显示一个清晰的屏幕(是的,当时我使用的是VT-52,波特率为300)。
因此Ctrl+ L为12,即FF。以同样的方式,Ctrl+ I是TAB,并且Ctrl+ G会按铃---如果终端或外壳未拦截它,例如Ctrl+ C。
从对方的回答通知:看来,bash中做拦截CTRL- L,并做了clear
。尼斯触摸该bash
作者相关的命令的关键,这将做更多或更少相同的ASCII码做旧终端!
在另一方面,在我的zsh
组合CTRL- I工作方式TAB和CTRL- H为Backspace(2)。
旧的好ASCII ...(请注意,字母L位于第4列第12行,它的ASCII码为4 * 16 + 12 = 76)。
原始图像在这里,从上ASCII维基百科的文章。
(1)Ctrl真正用来清除位7。
(2)这是您有时发现的“无法删除单词”笑话的来源,例如“这是一个糟糕的^ H ^ H ^ Hnot很好的主意” ...(通常一个单词比坏的要强!)
^H
s或^W
s会很好。:)
Control-L
被拦截和bash的解释(实际上是由该readline
库,它处理的命令行交互编辑)。clear-screen
如@souravc所写,它已绑定到该函数。
注意Control-L
:的含义:它在ASCII字符表中定义为换页符,但这没有任何意义,除非某些程序对此进行了解释。终端看到换页时不会清除屏幕,您可以通过在文件中保存^ L并使用进行打印来进行验证cat
。当bash/readline
看到时^L
,它执行clear-screen
功能。这将发送一个由终端仿真器理解的字符序列(如termcap或terminfo所述),并具有清除屏幕的作用。
在非常老的打印机中,a ^L
会使进纸开始在下一张纸上开始打印,因此被称为“换页”。但是现代的终端和终端仿真器遵循更新的ANSI标准,其中控制命令是以(转义)开头的多字符“转义代码”^[
。当bash看到您的时^L
,它可能正在发送两个命令序列ESC [ H ESC [ J
,该序列将移至屏幕的左上方并清除其下方的所有内容(因此将整个屏幕清除)。
ESC [ ESC [ J
还清除了命令历史记录,而该CTRL + L
序列却不清除。而是发送到终端的顺序是ESC [ H ESC [ 2 J
,继续自己尝试使用此命令:printf "\033[H\033[2J"
。