终端是物理设备,现在的“终端”是指终端仿真程序,控制台是特殊的终端,shell 是一个程序。

界面(interface)

在使用机器时必须有一种方式使人和机器能够交互,称这种功能为界面。

每个人类使用的机器都可以分为:界面和其他部件。

例如:对桌面计算机而言,界面包括显示器、键盘、鼠标、扬声器,其他部件包括机箱里的东西:硬盘、处理器、内存、显卡及网卡等。

用 Unix 术语来讲,称界面为终端(terminal),将其他部件总称为主机(host)。

终端(terminal)

因为终端提供界面,所以有两个主要的任务:接受输入和生成输出。

  • 计算机 = 终端 + 主机
  • 终端 = 输入设施 + 输出设施

人类也由终端和主机构成。人的终端包括输入设施:眼睛、耳朵、嘴、鼻子和皮肤;输出设施:嘴(发音)及能够改变环境的手、臂、腿等。人的主机包括:大脑、器官、肌肉以及血液等等。

从 Unix 的角度来说,人类使用计算机,就是人的界面与计算机的界面通信,即人的终端和计算机的终端交互。

Unix 是一种多用户系统,意味着可以有不止一个人同时使用计算机,只要满足两个条件:

  • 每个人拥有自己的终端
  • 终端与主机连接

终端的类型

只使用文本的终端称为字符终端(character terminal)或者基于文本的终端(text-based terminal)。

这种终端输入输出只有一种形式,即字符(也称为文本)。只有字母、数字、标点符号和几个特殊的控制键。

控制台 elements break on_虚拟控制台


DEC VT100 terminal

随着 PC 技术的发展,出现了图形终端。在输入方面依然依靠键盘和鼠标,在输出方面,充分利用视频硬件的优点,可以在屏幕上输出各种图形、几何形状、阴影、线条、彩色等。

控制台(console)

所有连接到主机的终端中,有一台终端比较特殊,它是用来管理系统的。这个特殊的终端就是控制台。

Unix 系统总是区分控制台和普通终端,有一些特定的事情只能在控制台上完成,不能通过远程终端完成。

终端程序

也称为终端仿真程序,是一个程序,用当前硬件来仿真终端。终端是物理设备,而终端程序是一个程序,但是现在我们平时所说的“终端”往往指的就是终端程序。由于现在已经不再使用单独的硬件终端(例如 Teletype ASR33 终端,注①),而是用计算机来仿真终端。当连接主机时,可以选择使用字符终端,也可以选择图形终端。当选择字符终端时,仿真的是一个 VT100 终端或者类似于 VT100 的终端。当选择图形终端时,仿真的是一个 X 终端,注②。

对现代 Unix 系统来说,访问终端仿真器有两种方法:终端窗口 和 虚拟控制台。

终端窗口就是指在桌面环境中,运行“ Terminal ”程序,可以打开任意数量的终端窗口,即同时运行多个终端,每一个终端都可以连接自己独立的主机。

而虚拟控制台,当 Linux 启动时,同时就启动了7个不同的终端仿真程序,称为虚拟控制台,其中#1~6都是全屏、基于文本的终端,用来使用 CLI。而虚拟控制台#7是图形终端,用来运行 GUI,注③。

shell

shell 是一个程序,充当用户界面和脚本解释器。

在 CLI 下,当启动 Unix 后,会执行一系列初始化命令,一旦初始化命令执行结束,Unix 就会启动 shell,并将控制交给它。

注释:
① Teletype ASR33 是最初的 Unix 终端,称为电传打字机,简称 TTY 。这种习惯被 Unix 采纳,单词“tty”作为 Unix 终端的符号。
② X 终端指图形终端, 不是 Xterm,Xterm 是一个终端程序,仿真 VAXstation 100(VS 100)图形终端。
③ 用 Ctrl + Alt + Fn , n=1~7 来切换虚拟控制台。