专栏首页Coding十日谈一篇文章带你快速弄清楚什么是终端

一篇文章带你快速弄清楚什么是终端

Linux的使用者可能每天都会接触到 Bash、Shell、控制台、终端。它们之间有什么不同吗?本文为你快速解释这些概念以及它们的区别。

什么是终端

首先我们来弄清楚什么是终端(terminal)。按照百度百科的解释是:“经由通信设施向计算机输入程序和数据或接收计算机输出处理结果的设备。” 听起来似乎有点晦涩,其实用台式PC机来举例就很容易理解了。一台台式机是由主机(机箱)和很多外围设备组成的。主机里边包括主板、CPU、内存、硬盘、和其他芯片等等。外围设备包括显示器、鼠标、键盘、耳机、麦克风、和摄像头等等。这些外围设备就被称为终端,负责向主机输入数据的就叫输入终端,比如鼠标、键盘、麦克风、摄像头,负责接收主机输出数据的设备就被称作输出终端,比如显示器、耳机。

所以有两个概念我们这里就清楚了:

计算机 = 主机 + 终端

终端 = 输入终端 + 输出终端

终端的类型

终端,除了可以分为输入终端与输出终端外,还可以按照与主机的距离可以本地终端和远程终端,或者按照与主机的连接方式分成物理终端和虚拟终端。

举个例子,比如我们在杭州的某个机房里有一台服务器,用VGA线接了一台显示器,用USB连接了键盘,那么这台显示器和这个键盘就是服务器的本地终端。假如我们在隔壁机房用串口线又接了一个显示器和键盘,那它们就可以称为远程终端。不管是在本地机房还是隔壁机房,因为这几个终端和服务器都是通过物理设备直接连接的,所以它们都被称为物理终端。物理终端在 Linux中被标识为 tty。它是teletype的缩写,因为在计算机早期的时候,Ken Thompson 和 Dennis Ritchie用电传打印机作为他们 Unix 服务器的终端(参考《Linux,Unix,GNU 到底有什么样的渊源?》),所以这个名字就这样被沿用了下来。

假如我们在上海的家里通过 ssh 远程登陆杭州的服务器,那么我们在家中用的设备就是服务器的远程终端,也是一个虚拟终端(因为没有与服务器在本地用物理设备连接)。虚拟终端在 Linux 中用 pts (pseudo termial slave)来标识。用 who 命令可以查看当前登陆系统的用户,以及他们所使用的终端类型。

什么是控制台

控制台(console)与终端现在已经几乎表示同一个意思了,但是在计算机发展的早期它们还是有本质区别的。最初,大型计算机(可能有几间屋子那么大)只有一个终端,被称为”控制台“,而它真的是一个控制台,就像下面这张图这样,有很多的仪表和开关,技术人员就是通过它来对计算机发出指令。那个时候计算机虽然很大,但每次只能有一个人来操作,并且一次也只能运行一个程序。后来Ken Thompson 和 Dennis Ritchie发明了Unix,于是操作系统可以同时运行多个程序,并且支持多个用户同时登陆。这样一来,仅有一个控制台就显得不够了。因为控制台又很贵,所以 Ken Thompson 和 Dennis Ritchie就用了相对便宜的电传打字机作为新增加的终端连接到他们的计算机上。虽然一台计算机可以连接很多个终端,但这里边只能有一个控制台,并且控制台的权限要远大于其他的终端,比如当系统发生启动错误时,只有控制台会显示错误消息,而其他终端不会;或者当系统进入单用户登陆模式时,只有通过控制台才能进行登陆,而通过其他终端没有办法登陆。所以如果用一句话来总结控制台与终端的区别,可以说控制台是计算机最早的以及权限最大的一个终端。

什么是 Shell 和 Bash

终端和主机虽然连接起来了,但是计算机还是需要一个程序才能明白我们输入的命令,这个程序就是 Shell。我们的命令就是通过终端输入到 Shell 里,再由 Shell 转换成计算机明白的指令,然后计算机才能运行。

Shell 有很多种,我们最常用的是 Bash,另外还有Csh, Ksh, Zsh等等。对于Bash,Linux的用户应该每天都在使用,这里就不再展开介绍了。

最后

控制台、终端、Shell、Bash 这些名词经常被大家混淆,虽然今天在很多场合它们经常被替换使用,大家也都明白,不过希望通过本文大家可以弄清楚它们之间的区别和联系。

本文分享自微信公众号 - Coding十日谈(tendayscoding),作者:Boccaccio

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 安卓到底是不是Linux

    Linux 与 Linux 内核其实是不一样的,关于这个问题,我在之前的一篇文章中讲过(《Linux,Unix,GNU 到底有什么样的渊源?》)。Linux 的...

    Coding十日谈
  • Vi 和 Vim 的使用

    Vi (Visual Interface)是 Linux下基于Shell 的文本编辑器,Vim (Visual Interface iMproved)是 Vi的...

    Coding十日谈
  • C++最好的图形库是什么?

    世界上的GUI库多如牛毛,有的开源,有的收费,有的可以做手机app开发,有的可以做桌面应用,有的只能用在某个系统,有的支持跨平台。基于不同的编程语言,人们又开发...

    Coding十日谈
  • http://www.178linux.com/7944

    Linux系统的终端主要包括控制台终端、控制终端、串口终端、伪终端、虚拟终端。 控制台终端(/dev/console)。 在Unix系统中,计算机显示...

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

    每天使用Linux每天都要接触到Bash,使用Bash时似乎永远都让人摸不着头脑的概念就是终端,坐在这台运行着Linux的机器的显示器前面,这个显示器就是终端的...

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

    每天使用Linux每天都要接触到Bash,使用Bash时似乎永远都让人摸不着头脑的概念就是终端,坐在这台运行着Linux的机器的显示器前面,这个显示器就是终端的...

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

    每天使用Linux每天都要接触到Bash,使用Bash时似乎永远都让人摸不着头脑的概念就是终端,坐在这台运行着Linux的机器的显示器前面,这个显示器就是终端...

    Linux阅码场
  • 绿色教学,让幼教专用NComputing云终端解决方案来守护孩子的成长

    对幼儿教育来说,电脑是必需品,云课堂的活跃气氛是不可少的。而作为人们日常工作生活所必不可少的工具,电脑就有着一些让人诟病的问题。比如那硕大的机箱无时无刻...

    nc云终端yun0101.com
  • 泛终端的精细化智能防御体系建设

    终端安全按照“本体防护、责任落实、统一准入、安全可视、在运合规”的管控原则,采取终端防病毒、泛终端准入控制、桌面终端管理、DNS安全监测分析、终端威胁分析以及基...

    FB客服
  • 从「胖瘦终端」谈边缘网络下的融合趋势

    网络和终端在目前在通讯不断演进和应用不断涌现的发展趋势下,已经逐渐脱离了传统的二元体系,有的网络功能在下沉,而终端的部分功能逐步也在上移。我们可以看到,在某些特...

    边缘计算

扫码关注云+社区

领取腾讯云代金券