在终端中按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-screenfunction相结合。

关于Control-L含义的注意事项:它在ASCII字符表中定义为Form Feed,但除非某些程序相应地解释它,否则这意味着什么。 终端在看到换页时不会清除屏幕,因为您可以通过在文件中保存^ L并使用cat打印文件来validation。 当bash/readline看到^L ,它执行clear-screenfunction。 这将发送终端仿真器可以理解的一系列字符(如termcap或terminfo所述),并具有清除屏幕的效果。

在非常旧的打印机中, ^L会使纸张开始打印在下一张纸上,因此名称为“换页”。 但现代终端和终端仿真器遵循较新的ANSI标准,其中控制命令是以^[ (转义)开头的多字符“转义码” 。 当bash看到你的^L ,它可能正在发送双命令序列ESC [ H ESC [ J ,它移动到屏幕的左上方并清除它下面的所有内容(因此整个屏幕)。

因为每个人都已经很好地解释了Ctrl + L是什么和做了什么,但没有人解释如何“反转”命令,这里有一些命令可以输入以回到你正在做的事情:

 history 

将为您提供您输入的最后20个命令。

 tail --lines=20 /var/log/dpkg.log 

将为您提供您正在执行的任何软件包安装的最后20行输出