终端(Terminal)是Unix/Linux世界里的一个基本的、重要的概念。
80年代典型的终端
终端——人与机器交互的接口
人和机器是两个相互独立的实体。当人使用机器时,必须借助某种接口(interface)才能与机器交流信息。台式机的接口包括显示器、键盘、鼠标、扬声器、麦克风等。CPU、内存、硬盘、光驱、显卡、网卡等其他硬件属于主机(host)。Unix和Linux把这种使得人和机器可以交互的接口称为终端。
终端具有两个基本功能:向主机输入信息和向外部输出信息。所以终端可以分为输入设备和输出设备。台式机的输入设备通常包括键盘、鼠标、麦克风,输出设备包括显示器、扬声器等。
早期的终端
个人计算机是上世纪70年代末开始出现的。在那之前,人们只能在公司或大学里使用大型机(mainframe)和小型机(minicomputer)。这些计算机非常昂贵,Unix创始人肯•汤普逊和丹尼斯•里奇使用的PDP-7小型机当年的价格为72000美元,GE-45大型机价格高达1000万美元。
肯•汤普逊和丹尼斯•里奇想让Unix成为一个多用户系统。多用户系统意味着要给每个用户配置一个终端,每个用户都要有一个显示器、一个键盘。但当时所有的计算机设备(包括显示器)价格都非常昂贵,而且键盘和主机是集成在一起的,根本没有独立的键盘。
最后他们找到了一样东西,那就是ASR33电传打字机。ASR是英文Automatic Send-Receive的首字母缩写。虽然电传打字机的用途是在电报线路上收发电报,但是它也可以作为人与计算机的接口,而且价格低廉。ASR33打字机的键盘用来输入信息,打印纸用来输出信息。
ASR33
所以他们把ASR33电传打字机作为终端,很多个ASR33连接到同一个主机,每个用户都可以在终端输入用户名和密码登录主机。这样他们创造了计算机历史上的第一个真正的多用户系统Unix,而ASR33成为第一个Unix终端。
什么是终端服务器(Terminal Server)?
当公司或大学的资金只能买一台大型机或小型机时,所有的终端都直接连到这台主机。随着时间的推移,主机价格逐渐下降,这时一个机构内部有多个主机。如何才能让每个终端都能连接到任何一个主机呢?在各个终端和主机之间牵一根线代价太大,而且线路容易搞混。这时候终端服务器就派上用场了。各个终端与终端服务器相连,各个主机也与终端服务器相连。当终端启动时,终端服务器询问用户要登录哪个主机,用户指定主机后,再输入用户名和密码登录相应的主机。这种拓扑结构很像今天的家庭网络,终端服务器相当于路由器。
控制台(Console)又是个什么东西?
通常终端都是通过线路连接到主机。有一个终端却与众不同,它与主机是一体的,不需要连线。这个特殊的终端就是console,中文名为控制台。Console是用来管理主机的,只能给系统管理员使用,而且一个主机只有一个console。Console与一般终端在外表上没什么区别,但在功能上却大不相同,有些事情只能在console完成,而不能在终端完成。例如,当系统启动出现错误时,错误信息会显示在Console的显示器屏幕上,而不会显示在一般的终端上。这是因为系统还没有成功启动,用户是不能在一般的终端登录系统的。另外,当主机需要维护或修复问题时,Unix以单用户模式启动(single-user mode)。在单用户模式下,只有console才能连接到主机,其他终端没有权限访问主机。
个人计算机上的显示器和键盘既可以认为是Console,也可以是一般的终端。当你在管理系统时,它们是Console;当你在做一般的工作时(浏览网页、编辑office文档等),它们是终端。
现在,人们把console和Terminal看成是同义词,在使用时往往不区分它们原来的差别。这是因为在90年代中期以前,人们都是在公司或大学里通过终端访问Unix,有专门的系统管理员在console管理系统。而现在,人们可以拥有自己的Unix,在自己的电脑上使用Unix,这时候,console和终端是一体的,自己既是一般用户,也是系统管理员。
终端模拟程序
现在我们知道终端属于硬件。从前用户坐在真实的终端前面输入命令,现在输入命令时不能使用真正的终端。因为现在真实的终端是图形界面的终端。现在,用户要输入命令必须使用终端模拟程序(Terminal Emulation Program)。终端模拟程序就是我们平常在Linux桌面环境中打开的终端窗口(Terminal Window),它是个虚拟终端,但主机会认为它就是真正的终端。终端模拟程序也可以叫做终端模拟器(Terminal Emulator)。
如果你使用Unity或Gnome桌面,那么在终端里输入命令man gnome-terminal,在gnome-terminal的手册里你会看到对gnome-terminal的介绍。gnome-terminal是 一个终端模拟程序,它模拟的是xterm。xterm也是一个终端模拟程序,xterm模拟的是DEC公司制造的VT102终端。你会发现,终端模拟程序 不仅可以模拟真实的终端,也可以模拟其他的终端模拟程序。