关于Unix/Linux的终端、伪终端、控制台和Shell(4)

早期的打字机(计算机发明之前)似乎还是手动回车和换行,所以上面的图片能看到"回车"(RE-TURN,第二排最后一个)和"换行"(LINE FEED,第二排倒数第二个)按键。后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵(可以回头看一下本文前面关于内存大小及其价格的表格),一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧,Unix系统里,每行结尾只有"<换行>",即"\n";Windows系统里面,每行结尾是"<回车><换行>",即"\r\n";Mac系统里,每行结尾是"<回车>"。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

当然,今天随着技术的进步,早已没有了换行和回车的区别,也就不再有RE-TURN和LINE FEED这两个键,统一的使用Enter来替代了。

之后,还是随着技术的进步,CPU、主板、输入输出设备等设备和缓冲技术的飞速发展,console控制台、tty终端这些不再是单独的设备,而是全部被现代的键盘和显示器所整合、代替。因此,console控制台和tty终端也就消失了。现在计算机的console控制台和tty终端都是虚拟出来的概念了,在概念上,键盘和显示器既是console,又是tty。至于什么时候是console,什么时候是tty,取决于那一刻在做什么。比如在我们的系统启动时,我们还能看的console控制台的影子。

下面的图就是类UNIX系统启动时的日志输出,也是退化后的console(退化后的console不再管理各种连接线,简单地保留了日志查看的基本功能,或者当你忘记root密码时,进行系统的“修理”)

关于Unix/Linux的终端、伪终端、控制台和Shell

 

5. 什么是shell

在了解了什么是终端和控制台之后,就很容易理解什么是shell了。再次回忆一下,什么是计算机系统?套用鸟哥的一句话:没有插电的计算机是一堆废铁,那么插了电的计算机是什么? 答案是:『一堆会电人的废铁』! 是的,插了电的计算机只是一堆会电人的废铁而已,要想发挥计算机的作用,不仅要有硬件,还要有软件,要安装系统,要上网就要用浏览器,要聊天,就得安装QQ。因此,计算机系统由计算机硬件和软件两部分组成。同样的,终端也是有两部分组成,一部分是终端的硬件:键盘+显示器,另一部分就是shell软件。你在终端里面敲键盘打字,shell软件接收你的输入,然后传递给操作系统,操作系统接收后进行处理,处理完毕后返回。相信到这里,shell是什么概念就不言而喻了,用晦涩的术语来描述就是:shell是人机交互的接口。

6. GUI和伪终端

GUI是图形界面的术语称呼。

虚拟终端和伪终端不同,资源抽象,一个真实存在,一个为提供逻辑抽象而虚拟的接口。

最后,本文根据互联网搜索、部分书籍参考、博客和问答社区以及英文翻译综合整理写出,由于对整个计算机历史并不了解,因此必然存在某些错误,恳请读者予以批评和指正,感谢!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13374.html