• Shell和Terminal的区别于联系


    背景介绍

    之前在刷抖音的过程中刷到一个视频,是介绍ShellTerminal的区别。之前在编程过程中虽然一直使用着终端模拟器软件敲Linux命令,但是对这两个的概念却不是十分了解。于是就借着这个机会,好好深入了解了解一下Shell

    首先,之前在抖音上刷到一个视频,是介绍ShellTerminal的区别,其中大致意思就是说,Shell是命令解析执行器,用来解析各种命令。然后终端是上个世纪的产物,当时计算机设备比较昂贵,所以是多套输入设备连接到一台机器上。输入设备有一个显示器和键盘鼠标,就称之为一个终端。这些输入设备都连接在一台机器上,所以这个现在的计算机概念还是不同。
    然后现在我们在电脑上使用的软件,都是叫做终端模拟器,是模拟当初终端的效果,本质上命令的执行还是由Shell来解析执行。

    正文内容

    上面提到的的抖音视频中的内容,可以用文字概括为:

    shell是外壳程序,负责接收指令,执行程序并返回结果,简单地可以分为图形化Shell和命令行Shell,比较常见的就是命令行Shell
    终端是命令的输入输出环境,分为终端设备和终端模拟器
    ----来源于:抖音-小刘不是程序员

    也就是说Shell是负责接收和解释命令的,而Terminal只是提供一个输入和输出的平台。之所以现在的人分不清这两者的区别,是因为现在在个人计算机中,这两者都集成在了一起,所以使用者感知不明显。在上个世纪,计算机设备还是一个比较昂贵的设备,所以不是每个人都能够拥有。但是当时的显示设备和输入设备,相较于计算机设备而言,是比较便宜的。因此,当时采取一种间接的方式,让更多的人使用上计算机设备,也就是一台计算机设备接入多个显示设备和输入设备。这样的显示和输入设备称之为终端。当用户使用的时候,就通过通信协议连接到计算机设备中,然后解析执行用户敲下的命令。
    以前的终端TerminalShell是分开的。而现在每个人都可以拥有一台计算机设备,Shell就在计算机内,用户通过外部的软件来调用Shell。,所以用户感知不明显。现在用户电脑上所使用的命令行软件,实际上是叫做终端模拟器,是模拟之前的终端设备效果。

    Shell和Terminal的区别

    看了多个帖子中的介绍,其内容和抖音视频中的内容相当,都是说:

    • Shell本质是一个命令解释器,是用于人与电脑交互的
    • Terminal是一个输入输出设备,是用户与计算机交互的工具

    Shell的分类

    Shell是一个命令解释的机器,是用于人机交互的。随着时代的发展,Linux发行版本的更新,历史上出现了许多不同的Shell。

    • zsh
    • bash
    • csh
    • tcsh
    • ash
      不同的shell的功能大同小异,都是解释执行命令。不同的shell之间大部分是兼容的,但同时也会有自己的新特性。所以在编写shell脚本的时候,需要注意自己将要用什么shell来执行这个脚本,这可能会一定程度上影响你编写脚本的语句。

    额外内容

    以下内容来自于“抖音-小刘不是程序员:《你真的了解终端吗?谈谈终端背后的秘密》”,主要是视频内容的文字概括。


    上个世纪,做终端硬件的公司,影响力最大的一个就是Digital Equipment Corporation公司,简称DEC。其公司发布了多款以VT开头的终端设备,其中VT100机器也是第一款符合ANSI标准的终端,后面也就以这款机器的名字VT100作为一个终端的标准。
    问什么终端需要一个标准?
    终端只能够显示文本内容,如果要其实现更复杂的功能,如换行、移动光标等。要实现这样的功能,单纯的文本内容不能够实现,这时候就需要其遵循一些约定,也就是后面的标准来实现。
    这样的功能实际上是通过终端控制序列Terminal Control Escape Sequence来实现,也就是将一些字符设计为控制字符。这样在出现这些字符的时候,系统就不会完全显示这些字符,而是将这些字符进行转义,执行其特定的功能,因此这些字符也称之为控制字符。控制字符在ASCII表中也有,如ASCII表中的0-31都是不可打印字符,都是执行特定功能的字符。控制字符不仅能够控制换行、光标移动等内容,还能够控制输出内容的颜色,因此才得以使用不同的颜色区分不同重要程度的内容。
    有了控制字符和终端控制序列之后,终端设备就能够使用文本内容,实现出更为复杂的功能和更清晰的显示效果。

    参考链接

    Shell和Terminal的区别

    shell有哪些?Zsh和Bash的区别是什么?–介绍了不同的Shell
    终端(terminal)、tty、shell、控制台(console)、bash之间的区别与联系
    console、terminal、shell区别及shell入门

    不同Shell的区别和联系

    bash和zsh的区别
    Zsh和Bash的兼容性问题–介绍了Zsh和Bash的一些语法上的不同
    zsh与bash区别
    Shell、Bash、Zsh这都是啥啊–介绍了bash的一些配置文件的作用

    抖音参考视频

    1、抖音-小刘不是程序员:《Shell 和 Terminal 的联系和区别》
    2、抖音-小刘不是程序员:《你真的了解终端吗?谈谈终端背后的秘密》

  • 相关阅读:
    vite+vue3项目中集成ESLint与prettier
    03_openstack之项目及用户管理
    GPT润色指令
    Android异步之旅:探索HandlerThread
    这一次,彻底解决滚动穿透
    Win10 ping 虚拟机kali 请求超时解决办法
    基于Xlinx的时序分析与约束(2)----基础概念(上)
    政企混合云技术架构的演进和发展
    疯狂小杨哥有意退网
    React 组件的3大属性: state
  • 原文地址:https://blog.csdn.net/Yuki_fx/article/details/127067490