Linux 终端与它的原始前身,电传打字机和“哑终端”或 vt100 类型控制台,有许多相似之处。这些早期的设备有发送“特殊”信号或信号序列的机制,信号序列代表正常键入的字符流以外的一些事件,如:后退一格、换行、音效或信息传递结束。Linux 终端和它的前身一样,使用 CTRL 键发送这些“特殊”信号。
下面的表格总结了所有 Linux 终端共享的许多常用控制组合键及其常见用法。在这个表格之后我们还会根据其适用性一步讨论这些控制组合键。
Table 1. Linux 终端控制组合键
组合键 |
符号名称 |
约定使用 |
CTRL-C |
SIGINT |
非常规中断 - 终止前台进程 |
CTRL-D |
EOT |
输入完成的正常信号 |
CTRL-G |
BEL |
终端声效 |
CTRL-H |
BS |
后退一格 - 删除前一个字符 |
CTRL-J |
LF |
换行 - 与 RETURN 键功能相同 |
CTRL-L |
FF |
换页 - 使 bash 清屏,使其它基于屏幕的程序“刷新”当前屏幕 |
CTRL-Q |
|
解冻终端显示(见 CTRL-S) |
CTRL-S |
|
冻结终端显示(使用 CTRL-Q 解冻) |
CTRL-U |
NAK |
删除当前的行 |
CTRL-Z |
SIGSTOP |
挂起前台进程 |
CTRL-C 可能是最有用的组合键,帮助用户停止现在进行的工作。使用 bash shell 时,点击 CTRL-C 可以终止当前运行的进程,返回到 bash 提示。
设备节点 /dev/zero 是假设备,读取时会返回无数个(二进制)零。/dev/null 设备节点也是一个假设备,会删除任何写入其中的信息。因此以下命令会永远运行下去,读取零,然后删除。处于这种情况的用户可以使用 CTRL-C 取消这个命令。
[elvis@station elvis]$ cat /dev/zero > /dev/null (... user types CTRL-C ...) [elvis@station elvis]$ CTRL-D
在以后的教程中我们会谈到,许多 Unix 命令直接从键盘读取输入。但对于新的 Unix 用户来说,如何通知命令何时停止读取输入常常是不明显的。解决这个问题的办法是用组合键 CTRL-D。这组控制键向读取的进程传送“信息传递完毕”的信号(一般理解为“文件结束”)。
wc 命令在没有给出文件名作为参数的情况下,会对用户从键盘输入的行、词和字符进行计数。用户使用组合键 CTRL-D 表示输入结束。
[elvis@station elvis]$ wc polly wants a cracker polly wants a cracker polly wants a cracker (... user types CTRL-D ...) 3 12 66 [elvis@station elvis]$
命令 wc 会负责地报告,用户输入了 3 行,共有 12 个词,使用了66个字符。(这个功能现在可能没有用,但在以后的教程中我们还会学到更多的 wc 的用法。)如果用户使用 CTRL-C 又会怎么样呢?
组合键 CTRL-Z 用来挂起程序,挂起的程序可用 fg(“foreground”(前台))命令恢复。在进行 ftp 会话时,elvis 想要确认 shell 的当前工作目录。他使用 CTRL-Z 挂起正在进行的 ftp, 从 shell 运行 pwd 命令,然后用 fg. 恢复 ftp 会话。
[elvis@station elvis]$ ftp ftp.redhat.com Trying 66.187.232.51... Connected to ftp.redhat.com (66.187.232.51). 220 Red Hat FTP server ready. All transfers are logged. (FTP) Name (ftp.redhat.com:elvis): anonymous 331 Please specify the password. Password: 230 Login successful. Have fun. Remote system type is UNIX. Using binary mode to transfer files. ftp> (... user types CTRL-Z ...) [1]+ Stopped ftp ftp.redhat.com [elvis@station elvis]$ pwd /home/elvis [elvis@station elvis]$ fg ftp> ftp.redhat.com ftp> ls 227 Entering Passive Mode (66,187,232,51,67,212) 150 Here comes the directory listing. drwxr-xr-x 6 ftp ftp 4096 May 24 01:33 pub 226 Directory send OK. ...
以这种方式管理进程是相当复杂的,在以后的教程中我们会再讨论。现在我们只要知道 CTRL-Z 用来挂起、fg 用来恢复就可以了。
CTRL-U 一般用来“擦除”当前的行。如果你所在的 bash 命令行错误繁多,你懒得修改,不如使用 CTRL-U 重新来过。如果你输入密码时弄错了,也可以使用 CTRL-U。因为输入的密码不会在屏幕上显示,有时很难知道到底输入了什么,很难改动,不如使用 CTRL-U 组合键重新来过。
CTRL-H 和 BACKSPACE 的功能完全一样。但在有些终端上,BACKSPACE 键被错误的映像,不能正确工作。而 CTRL-H 几乎总是可以在这些情况下正常发挥作用。
CTRL-L 传统上用来停止打印当前的页,开始下一页。如果使用在线终端,可以用它来刷新屏幕。对于许多基于屏幕的程序而言,包括 vi 和 nano 编辑器,如果意外的信息弄乱了显示屏,使用 CTRL-L 可以让程序刷新屏幕,正确地重绘屏幕。
在 bash shell 中,CTRL-L 指示 bash 清屏,但保留当前的命令行。
在 CTRL-S“冻结”屏幕后,CTRL-Q“解冻”屏幕(让它重新启动)。虽然在使用过 CTRL-Q 后,才能用这个组合键,我们先介绍它(作为更有用的命令)是因为,几乎没有人会故意使用 CTRL-S,但新的 Unix 用户有的时候会不小心点击 CTRL-S 组合键,不明白为什么他们的屏幕会冻结起来。如何你的机器出现死屏的现象,试着使用CTRL-Q 看能否解冻。
见上一项 CTRL-Q
几乎从来不用。(一般使用 RETURN 键。)
唯一真正的用途是让终端发出响声。