在终端中按Ctrl + L.
我不小心在终端输入了ctrl + L ,我的终端窗口跳了一个’屏幕’大小。 我查看了“编辑” – >“键盘快捷键”中的键盘快捷键,但未找到该快捷键。
ctrl + L有什么作用,它在哪里定义?
ctrl + L只需清除终端屏幕即可。
键盘快捷键等同于命令clear
。
它是bash
属性,所以你没有在gnome-terminal的键盘快捷键下找到它。 来自man bash
:
clear-screen (Cl) 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键盘快捷键的详细列表。
如果您正在使用的shell没有拦截它,那么您在终端中键入“Form-feed”字符。 如果终端应用程序没有以某种方式拦截或使用击键,则Ctrl + Letter将转换为字母减去64(1)的ASCII码。 65是ASCII代码’A’,’L’是第12个字母 – >代码76.如果shell不知道该怎么做代码,它会打印出来。
打印FF char导致行式打印机上的新页面和终端上的清晰屏幕(是的,我当时使用的是VT-52 ,波特率为300)。
所以Ctrl + L是12,这是FF。 同样, Ctrl + I是一个TAB,而Ctrl + G会响铃 – 如果终端或shell没有拦截它,例如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那么好的主意”……(通常一个词比坏的更强!)
Control-L
由bash拦截和解释(实际上由readline
库处理,它在命令行上处理交互式编辑)。 正如@souravc写的那样,它与clear-screen
function相结合。
关于Control-L
含义的注意事项:它在ASCII字符表中定义为Form Feed,但除非某些程序相应地解释它,否则这意味着什么。 终端在看到换页时不会清除屏幕,因为您可以通过在文件中保存^ L并使用cat
打印文件来validation。 当bash/readline
看到^L
,它执行clear-screen
function。 这将发送终端仿真器可以理解的一系列字符(如termcap或terminfo所述),并具有清除屏幕的效果。
在非常旧的打印机中, ^L
会使纸张开始打印在下一张纸上,因此名称为“换页”。 但现代终端和终端仿真器遵循较新的ANSI标准,其中控制命令是以^[
(转义)开头的多字符“转义码” 。 当bash看到你的^L
,它可能正在发送双命令序列ESC [ H ESC [ J
,它移动到屏幕的左上方并清除它下面的所有内容(因此整个屏幕)。
因为每个人都已经很好地解释了Ctrl + L是什么和做了什么,但没有人解释如何“反转”命令,这里有一些命令可以输入以回到你正在做的事情:
history
将为您提供您输入的最后20个命令。
tail --lines=20 /var/log/dpkg.log
将为您提供您正在执行的任何软件包安装的最后20行输出