终端(Terminal)是Unix/Linux世界里的一个基本的、重要的概念。但很多人并不了解终端的真正含义。根据维基百科,终端的定义是:是一台电脑或者计算机系统,用来让用户输入数据,及显示其计算结果的机器。终端有些是全电子的,也有些是机电的。其又名终端机,它与一部独立的电脑不同。
人和机器是两个相互独立的实体。当人使用机器时,必须借助接口(interface)才能与机器交流信息。台式机的接口包括显示器、键盘、鼠标、扬声器、麦克风等。CPU、内存、硬盘、光驱、显卡、网卡等其他硬件属于主机(host)。Unix和Linux把这种使得人和机器可以交互的接口称为终端。
终端具有两个基本功能:向主机输入信息和向外部输出信息。所以终端可以分为输入设备和输出设备。台式机的输入设备通常包括键盘、鼠标、麦克风,输出设备包括显示器、扬声器等。
我们可以将上面的两段内容归纳为两个公式
计算机 = 主机 + 终端
终端 = 输入设备 + 输出设备
台式机的主机和终端在物理上是分开的,笔记本电脑却是一个整体,但我们仍然可以将笔记本电脑的设备分为主机和终端。
人类也可以有终端。人类的终端,也就是人类与外部世界进行信息交流的接口。人类终端的输入设备包括感知器官,即眼睛、耳朵、嘴巴、鼻子等。输出设备包括嘴巴(发出声音)、四肢(改变外部世界)等。
综上所述,终端是人与机器交互的接口。人通过自身终端的输出设备(嘴巴或手)将信息传递给计算机终端的输入设备(键盘、鼠标、麦克风等),后者将信息传递给计算机的主机。主机处理完信息后,将结果传递给计算机终端的输出设备,后者将结果传递给人类终端的输入设备,最后到达人类的大脑。
个人计算机是上世纪70年代末开始出现的。在那之前,人们只能在公司或大学里使用大型机(mainframe)和小型机(minicomputer)。这些计算机非常昂贵,Unix创始人肯•汤普逊和丹尼斯•里奇使用的PDP-7小型机当年的价格为72000美元,GE-45大型机价格高达1000万美元。
肯•汤普逊和丹尼斯•里奇想让Unix成为一个多用户系统。多用户系统意味着要给每个用户配置一个终端,每个用户都要有一个显示器、一个键盘。但当时所有的计算机设备(包括显示器)价格都非常昂贵,而且键盘和主机是集成在一起的,根本没有独立的键盘。
但是,最后他们找到了一样东西,那就是ASR33电传打字机。(ASR:Automatic Send-Receive)虽然电传打字机的用途是在电报线路上收发电报,但是它也可以作为人与计算机的接口,而且价格低廉。ASR33打字机的键盘用来输入信息,打印纸用来输出信息。
所以他们把ASR33电传打字机作为终端,很多个ASR33连接到同一个主机,每个用户都可以在终端输入用户名和密码登录主机。这样他们创造了计算机历史上的第一个真正的多用户系统Unix,而ASR33成为第一个Unix终端。同时ASR-33电传打字机为比尔·盖茨提供了计算机的启蒙。
当公司或大学的资金只能买一台大型机或小型机时,所有的终端都直接连到这台主机。随着时间的推移,主机价格逐渐下降,这时一个机构内部有多个主机。如何才能让每个终端都能连接到任何一个主机呢?在各个终端和主机之间牵一根线代价太大,而且线路容易搞混。这时候终端服务器就派上用场了。各个终端与终端服务器相连,各个主机也与终端服务器相连。当终端启动时,终端服务器询问用户要登录哪个主机,用户指定主机后,再输入用户名和密码登录相应的主机。这种拓扑结构很像今天的家庭网络,终端服务器相当于路由器。
通常终端都是通过线路连接到主机。有一个终端却与众不同,它与主机是一体的,不需要连线。这个特殊的终端就是console,中文名为控制台。Console是用来管理主机的,只能给系统管理员使用,而且一个主机只有一个console。Console与一般终端在外表上没什么区别,但在功能上却大不相同,有些事情只能在console完成,而不能在终端完成。例如,当系统启动出现错误时,错误信息会显示在Console的显示器屏幕上,而不会显示在一般的终端上。这是因为系统还没有成功启动,用户是不能在一般的终端登录系统的。另外,当主机需要维护或修复问题时,Unix以单用户模式启动(single-user mode)。在单用户模式下,只有console才能连接到主机,其他终端没有权限访问主机。
个人计算机上的显示器和键盘既可以认为是Console,也可以是一般的终端。当你在管理系统时,它们是Console;当你在做一般的工作时(浏览网页、编辑office文档等),它们是终端。
现在,人们把console和Terminal看成是同义词,在使用时往往不区分它们原来的差别。这是因为在90年代中期以前,人们都是在公司或大学里通过终端访问Unix,有专门的系统管理员在console管理系统。而现在,人们可以拥有自己的Unix,在自己的电脑上使用Unix,这时候,console和终端是一体的,自己既是一般用户,也是系统管理员。
根据维基百科:控制台(console)是命令行界面的别称
名称 | 英文名 | 特点 |
---|---|---|
图形终端 | Graphics Terminal | 可以显示图像和文本 |
字符终端 | (Character Terminal)也叫文本终端(Text Terminal) | 只能接收和输出文本信息的终端 |
实际上,终端模拟程序分为两种。在上面提到的终端窗口是其中一种,另外一种是虚拟控制台(Virtual Console)。在上世纪七八十年代,在公司和大学里,一般人们只可以使用一个终端。但有一些重量级人物可以使用很多个终端,因为他们需要在同一时间内使用主机做不同的事,所以在他们的办公桌上会有四五个甚至六七个终端。
现在,我们不需要在桌上摆上这么多个终端。Unix允许用户在自己电脑上使用多个终端,其中有一个是图形终端,其他六个是字符终端。这七个终端使用同一个显示器和键盘。如果我们需要从一个终端切换到另外一个终端,只需按一下快捷键。一般情况下当我们启动Linux系统时,图形界面自动启动。但有一件事你可能不知道,实际上Linux会同时启动七个不同的终端模拟程序。这七个特殊的终端模拟程序叫做虚拟控制台。
第一个到第六个虚拟控制台是全屏的字符终端,第七个虚拟控制台是图形终端,用来运行GUI程序。从图形终端切换到字符终端,我们只需按快捷键CTRL+ALT+F1,或CTRL+ALT+F2…….CTRL+ALT+F6。要切换回图形终端,只需按快捷键CTRL+ALT+F7。当图形终端崩溃时,我们可以按快捷键切换到这六个字符终端的其中一个,然后输入命令修复问题或重启系统。
Unix系统在诞生之初就被设计成一个单主机多终端模式的多用户系统。现在我们仍然可以在自己家中组建一个”单主机多终端”的计算机系统,也就是说我们可以把一台硬件强大的主机放在家中,主机安装Linux系统,然后在各个房间部署一个显示器、一个键盘鼠标,这样各个房间都有了自己的终端,各个终端连接到主机,供家人使用。实际上,我们可以在任何终端上通过互联网登录到世界任何地方的Unix主机,只要你有权限访问那台Unix主机。比如我们可以购买国外的VPS,然后在自己的Linux系统上打开一个终端模拟程序,用SSH登录VPS。
注意windows系统虽然号称是多任务多用户系统,但windows对多用户的定义是可以创建多个账号。在windows系统上,同一时间只能登录一个用户账号。Unix-like系统允许多个账号同时登录,是真正的多用户系统。
由于作者能力有限,文章部分内容转自:https://mp.weixin.qq.com/s/rzfkgVuiD6ak-PVHqfGyLQ