最初的Unix设计假定人们使用终端连接主机计算机。30多年过去后,情况依然如此,即便是在自己的PC机上运行Unix。多年以来,终端发展为许多不同的类型,并且提供了许多不同类型的键盘,但是Unix一直能够很好地使用它们。这是因为Unix使用了一个键盘映射系统,该系统非常灵活,可以用于任意类型的键盘。
为了控制程序运行时的操作,Unix使用了一组键盘信号。尽管这些信号是标准的,但是发送这些信号所需按下的键却可以根据需要变化。正是这一点创造了灵活性。例如,有个叫 intr (interrupt,中断)的信号可以终止进程的运行。如果输入了一条需要花费很长时间才能结束的命令,那么就可以向该命令发送 intr 信号来停止该命令的运行。
键盘输入过程中使用的信号:erase、werase、kill
erase
删除最后一个键入的字符werase
删除最后一个键入的单词kill
删除整行
信号 | 键 | 作用 |
---|---|---|
erase | / | 删除最后一个键入的字符 |
werase | ^W(即 Ctrl + W) | 删除最后一个键入的单词 |
kill | ^X / ^U | 删除整行 |
文件结束信号 EOF
有时候,您使用的程序期望您从键盘输入数据。当数据输入完,没有数据再输入时, 可以通过按下^D发送eof(end of file,文件结束)信号指示这一点。
下面举一个例子:在第8章中,将讨论提供内置计算器服务的程序 bc
。一旦启动了 bc
,就可以一个接一个地输入计算。在每个计算之后,bc
程序显示答案。当结束计算时, 按下 ^D
告诉 bc
程序没有数据了。在接收到eof信号之后,程序就会终止。
显示键盘映射
在 shell 中输入:
stty -a
即可看到本机的键盘映射。