# 终端
终端(terminal)主要指计算机的输入、输出设备,供用户用于与计算机交互。
- 比如一个显示器加一个键盘就可以组成一个终端。
# 相关历史
- 20 世纪早期,计算机通常使用电传打字机(Teletype ,tty)作为输入、输出设备。
- 电传打字机在 19 世纪就因为发送电报而流行起来,可以通过穿孔纸带(Punched tape)记录二进制形式的数据。
- 至今,类 Unix 系统中依然可能将终端简称为 tty 。
- 早期的计算机只有一个控制台(console),供用户管理硬件线路。但可以连接多个终端,供多个用户与计算机交互。
- 20 世纪中期,计算机通常使用 CRT Monitor 作为主要的输出设备,使得操作系统可以显示一个命令行界面,供用户比较直观地操作。
- Multics 系统首次将集成在操作系统中的命令处理器改进成一个独立的模块,称为命令行解释器(Command Line Interpreter),允许用户更换解释器。
- Unix 系统将命令行解释器进一步优化,增加了管道符、脚本等功能。
# 终端界面
计算机通常会在显示屏中显示一个终端界面,供用户操作。主要分为两类:
- 命令行界面(Command Line Interface ,CLI)
- :只显示字符文本,只允许用户通过键盘进行操作,例如输入一些字符串作为 shell 命令执行。
- 例如 Linux 内核只提供了 CLI 界面,但有的 Linux 发行版也提供了 GUI 界面。
- 例如 Xterm 是一种常见的、古老的终端,功能简单,原本是 X Window 的默认终端。
- 用户图形界面(Graphical User Interface ,GUI)
- :显示一些图形按钮,允许用户通过键盘、鼠标、触摸板等方式操作。
# 命令行提示符
- 等待用户输入时,CLI 终端的左侧会显示命令行提示符。其默认格式为
[用户名@主机名 当前目录名]用户提示符
,如下:[root@CentOS ~]#
- root 用户、普通用户的用户提示符分别为 # 、$ 。
# 终端的快捷键
shell 终端支持以下快捷键:
关于进程:
Ctrl + C
:终止当前终端的前台进程。这实际上是通过键盘输入\x03
字符,导致 shell 解释器向进程发送 SIGINT 终止信号。Ctrl + D
:退出当前终端,相当于执行命令 exit 。这实际上是通过键盘输入\x04
字符。Ctrl + Z
:暂停当前的前台进程,并将它移到后台。
关于显示:
Ctrl + L
:清屏,使屏幕上只剩第一行。相当于执行命令 clear 。Ctrl + A
:将光标移动到行首。Ctrl + E
:将光标移动到行尾。Ctrl + P
:显示上一条历史命令。Ctrl + N
:显示下一条历史命令。Ctrl + S
:冻结屏幕的显示内容,不再变化。Ctrl + Q
:取消冻结屏幕。
关于输入:
Tab
:自动补全输入。如果只有一个候选项,则按一下会自动补全,否则按两下显示所有候选项。- 如果终端不支持自动补全,则需要安装
yum install bash-completion
,然后重启 shell 。 /usr/share/bash-completion/completions
目录下保存了各种命令的自动补全脚本。
- 如果终端不支持自动补全,则需要安装
Ctrl + U
:剪切光标之前的所有内容。Ctrl + K
:剪切光标之后的所有内容。Ctrl + W
:剪切光标之前的一个字段。如果连续剪切多次,则剪切的内容会拼接成一个字符串。Ctrl + Y
:粘贴用上述命令剪切的内容。Ctrl + Shift + C
:复制。Ctrl + Shift + V
:粘贴。
关于历史命令:
Ctrl + R
:检索历史命令。输入关键词之后,再按下 Ctrl + R 会倒序显示每个匹配项。Ctrl + P
:切换到历史命令的上一条(provious),相当于按键 ↑ 。Ctrl + N
:切换到历史命令的下一条(next),相当于按键 ↓ 。