一文带你彻底理解Linux的各种终端类型及概念

作者:dog250来源:https://me.csdn.net/dog250每天使用linux每天都要接触到Bash , 使用Bash时似乎永远都让人摸不着头脑的概念就是终端 , 坐在这台运行着Linux的机器的显示器前面 , 这个显示器就是终端的输出 , 而插在机器上的USB键盘或者PS/2键盘就是终端的输入 , 看来这是一种最直白意义上关于终端的解释 。
但是有的时候 , 机器上并没有看到显示器或者键盘接口 , 但是却有一个串口 , 想操作这台机器想必只能通过这个串口来进行了 , 这个时候 , 串口另一端的那台电脑的显示器键盘也叫做终端 。除了上述两种意义的终端之外 , 我们使用的类似SecureCRT这种软件上运行的SSH , Telnet等也算是一种终端程序 , 只是说它是通过TCP/IP网络而不是通过串口与主机连接的 。
现在可以给终端下一个非严格意义上的定义了 , 什么是终端?终端就是处理计算机主机输入输出的一套设备 , 它用来显示主机运算的输出 , 并且接受主机要求的输入 , 典型的终端包括显示器键盘套件 , 打印机打字机套件等 。但想要彻底理解终端的概念 , 还是要从计算机发展历史的角度去寻根溯源 。
最开始的时候 , 计算机有三间房屋那么大 , 确切地讲应该叫三间车间 。如此的庞然大物有一个专门的操作台 , 就好像机床厂车间的操作台一样 , 或者说它像飞机驾驶舱的操作台更加合适 , 各种仪器仪表 , 操作员只需要在这里对这部机器发出指令 , 整部机器就开始为他的指令而运算 , 然后机器运算后的结果也会反馈到这里而不是其它地方 , 这里这个操作台就是最原始的终端 。这里曾经是整部机器的控制中枢 。

一文带你彻底理解Linux的各种终端类型及概念

文章插图
 
后来有了多用户多任务分时系统 , 不同的程序竟然可以“同时运行”了 , 为了让不同的程序分别独立地接受输入和处理输出 , 就需要多个不同的上述的操作台 , 当然了 , 坐在或者站在操作台前面的最好始终是同一个人 , 这样不同的人拥有不同的操作台处理不同的程序 , 这就进入了多终端时代 , 从这时起一直到现在 , 每一个终端都是和一个用户绑定的 。为了保证这种绑定 , 于是就出现了登录 , 即通过一种叫做登录的动作 , 去唤起一个终端起来工作 。为了支持多用户 , 终端从硬件分离了出来 , 终端成了一个软件概念 , 在一个硬件终端上成功登录后 , 便获得了一个软件终端 。
可见 , 这个时代已经和三车间的时代不同了 , 终端不再只有一个 , 而是变成了多个 , 每一个登录成功的用户拥有一个可工作的软件终端来处理输入输出 。
一文带你彻底理解Linux的各种终端类型及概念

文章插图
 
分久必合 。
到了个人计算机时代 , 计算机和终端又成了一对一的关系 。毕竟嘛 , 这时的计算机叫做个人计算机 , 并不是随便谁都能用的 , 计算机本身就是归属个人 , 所以根本没必要去支持什么多用户 , 或者至少是淡化了多用户和多终端的概念 。我们都曾记得 , 当时买电脑的时候 , 都是一个主机配一个显示器和一套键盘鼠标 , 这种情况从上世纪80年代初一直持续到今天 。不过近些年来当人们逐渐全面认识到计算机和终端的一对一关系后 , 一体机的市场就来了 , 既然你几乎不会(我当然知道有人会 , 但这里我说的是大多数人 , 程序员占比寥寥 , 程序员为了装X , 是不会用一体机的 , 就连品牌机套装有时也不屑的)在同一主机上接多个显示器多套键盘 , 何必再那么麻烦 , 干脆把主机和显示器合在一起不就好了嘛 。嗯 , 这个点子不错 , 循着这个路子 , 最终有了触屏一体机 , 连键盘都内置了 。对比一下下图和三车间里的计算机时代 , 是不是很像呢?
一文带你彻底理解Linux的各种终端类型及概念

文章插图


推荐阅读