美文网首页
终端的前世今生

终端的前世今生

作者: catHeart | 来源:发表于2017-06-24 20:44 被阅读191次

Linux系统启动后,如果没有安装图形桌面系统,用户看到的是黑乎乎的屏幕; 根据提示输入用户名和密码后,用户可以通用命令行控制电脑执行任务。如果是登陆到了图形桌面系统,用户可以打开xterm、gnome-terminal或者konsole输入指令。有人说命令行是Linux系统难以使用以致无法普及的根源; 也有人说命令行是Linux系统的魅力所在。远离这些无意义的争论不谈,掌握命令行才能发挥Linux最大的威力。

终端(Terminal)是命令行界面的硬件层面和软件层面的载体。它与计算机关系密切,其历史可以追溯到计算机诞生之初,也随着计算机的发展而发生变化。

实体终端

vt100_terminal_all.png

计算机在早期不是面向个人的,而是作为服务器为某个组织、机构甚至整个国家服务的。用户需要一个终端,通用串口线或电话线与计算机相连,才能登陆进去执行自己的伟大的计算工作; 不知道那时的程序员是否已经弄出来了游戏程序,忙里偷闲的时候,在终端里玩的不亦乐乎。

终端是一种通过字符与计算机进行信息沟通的设备,包括输入、显示、通信和处理模块等部分。终端的通信模块与计算机相连,提供终端与计算机之间的双向通信链路; 用户输入的信息通过该链路到达计算机,计算机返回的数据通过该链路到达终端,终端负责将这些显示出来。

计算机看到的是一个通信端口,但是仅仅在软件上实现通信的驱动功能是不够的,因为终端的种类很多,它们实现换行、字符颜色等特殊功能时需要在向终端发送不同的指令;所以,计算机还需要实现终端的驱动,构建设备文件 /dev/ttyX。设备文件/dev/ttyX为用户提供了针对终端的统一端口,编程时程序员可以忽略用户所使用的终端的具体型号,执行统一的文件操作完成终端的输入读取或输出显示内容;还可以使用系统调用ioctl或C语言库termios控制终端的行为。

Framebuffer终端

framebuffer-console.png

随着个人计算机的发展,每台计算机都配置着显示器和键盘,终端成为计算机的标配。把Linux系统启动或切换到命令行界面,看到的就是计算机自身的终端,这种终端是Linux系统基于FrameBuffer实现的。FrameBuffer是Linux系统图形系统的抽象层,用于控制显示器上显示的内容。/dev/fb0是FrameBuffer设备的设备文件。执行下面的指令

cat /dev/urandom > /dev/fb0

会将屏幕变成一个满是噪声的样子。

终端模拟器

gnome-terminal.png

在Linux图形桌面中,打开的终端,比如xterm, gnome-terminal和konsole等,也是一种终端。但是,它们一般被成为终端模拟器(Terminal Emulator),因为它们都是使用软件模拟出的终端。终端的显示部分基于X Window系统实现的。

这些终端模拟器对应的终端设备一般成为Pseudoterminal,其设备文件位于/dev/pts/X中。在终端中,使用tty命令,可以得到当前终端对应的终端设备文件。对终端设备文件进行操作,可以实现一些有趣的结果。

terminal-talk.png

打开两个终端,A对应的终端设备文件为/dev/pts/0,B对应的终端设备文件为/dev/pts/1。在终端A中,执行echo message > /dev/pts/1,会在终端B中显示出message信息。基于这个功能,可以实现不同终端的用户之间进行聊天。

其他

另一个与终端形影相随的东西是shell程序,比如sh,bash,zsh等;它负责进程的管理,比如后台运行、终止程序等,这个过程背后有一套复杂的结构,后面有时间可详细了解;可同时参考script程序,它与Shell有着相同的基本原理。

参考文献

相关文章

  • 终端的前世今生

    Linux系统启动后,如果没有安装图形桌面系统,用户看到的是黑乎乎的屏幕; 根据提示输入用户名和密码后,用户可以通...

  • 将军在上之男昭女惜重生三世千年孽缘

    前世!今生!来世再续! 前世欠谁!今生还!来世再续前缘! 前世因!今生续!来世果!

  • 人死,并非如灯灭……

    “今生,是前世的“来生”,是来生的“前世”。在今生中,我们能见到自己的前世与来生。回溯前世,是为了改善今生;回到今...

  • 前世今生来世缘

    谈何前世情 今生还 今生情 来世还 前世孽债 前世还 未了 今生还 今生欠 今生还 谈何来世还 来世欠 来世还 能...

  • iOS Device ID 的前世今生

    iOS Device ID 的前世今生 iOS Device ID 的前世今生

  • 何世许今生

    前世的怨,今生的恨;前世的悲,今生的苦;前世的善,今世的乐。

  • 前生不欠 今生不见

    若無前世緣,何來今生見 前世不回眸,今生怎擦肩 前世若不欠,今生亦不見 今生且不欠,來生即自願

  • 今生的钥匙,前世的锁!

    今生的钥匙,前世的锁! 2019-05-24 午夜 今生的钥匙,前世的锁, 今生的...

  • 苹果新贵Swift之前世今生

    苹果新贵Swift之前世今生 苹果新贵Swift之前世今生

  • 一扇门

    前世 今生 隔着一扇永生门 前世的人走不进今生 今生的人回不到前世 门里门外徘徊着的 都是放不下的人 放不下前世 ...

网友评论

      本文标题:终端的前世今生

      本文链接:https://www.haomeiwen.com/subject/nyfkcxtx.html