刚接触UOS的用户可能不知道命令(shell)如何使用,什么是终端?这里OneUOS分享这篇UOS入门教程终端与命令(shell)介绍给大家。

什么是终端?

在早期的计算机历史上,终端的概念是这样的:

是一种硬件,是一种输入输出设备,用于和计算机交换信息

UOS入门教程:终端与命令(shell)介绍-OneUos

约1982年的ASKII视频终端(图源

终端的工作:用户通过终端输入命令,终端将命令传入计算机,执行后,并把结果输入到终端上显示。

但是现在计算机硬件一体化程度越来越高,硬件质量也越来越强,输入输出设备完全没必要 单独用一个硬件和计算机进行交换信息了,取而代之使用软件终端和计算机进行交互信息。这就是终端模拟器 (Terminal Emulator),也就是现在人们所了解的终端。

UOS入门教程:终端与命令(shell)介绍-OneUos

terminator 终端终结者

当使用图形用户界面时,需要终端模拟器与shell进行交互。在Linux系统中,有许多终端模拟器可以使用,但是它们基本上都做同样的事情:让用户访问shell。

那么,

shell 是什么?

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。是在Linux内核与用户之间的解释器程序,现在Linux通常指/bin/bash解释器来负责向内核翻译以及传达用户/程序指令,shell相当于操作系统的“外壳”。

UOS入门教程:终端与命令(shell)介绍-OneUos

linux架构(图源

如上图所示:如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。

Shell相当于是一个翻译,把我们在计算机上的操作或我们的命令,翻译为计算机可识别的二进制命令,传递给内核,以便调用计算机硬件执行相关的操作;同时,计算机执行完命令后,再通过Shell翻译成自然语言,呈现在我们面前。

shell分为两大类:

  • 图形化 shell(图形化的桌面环境):如Windows Explorer (文件管理器)、 Linux的桌面环境有:KDE、GNOME、DDE 等。
  • 命令行 shell。如bash 、sh 、csh 、ksh

以上是shell作为命令解释器,同时Shell有自己的编程语言  用于对命令的编辑,它允许用户编写由shell命令组成的程序。

shell也是一种程序设计语言作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

最后,bash 与 shell

上文所述,shell是运行在终端中的命令语言,而bash(GNU Bourne-Again Shell)是最常用的一种shell。

由于早年的 Unix 年代,发展者众,所以由于 shell 依据发展者的不同就有许多的版本,例如常听到的 Bourne SHell (sh) 、在Sun 里头默认的 C SHell、 商业上常用的 K SHell、还有 TCSH,ZSH 等等,每一种 Shell 都各有其特点。

UOS入门教程:终端与命令(shell)介绍-OneUos

shell家族(图源网络)

shell的简单历史:

第一个流行的 shell 是由 Steven Bourne 发展出来的,为了纪念他所以就称为 Bourne shell ,或直接简称为 sh !而后来另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计依附于 BSD 版的 Unix 系统中的 shell ,这个 shell 的语法有点类似 C 语言,所以才得名为 C shell ,简称为 csh !由于在学术界 Sun 主机势力相当的庞大,而 Sun 主要是 BSD 的分支之一,所以 C shell 也是另一个很重要而且流传很广的 shell 之一 。

 

现在,随着shell的发展,zsh 受到更多人的喜爱,一些发行版开始把  zsh 作为默认shell具体原因可见:为什么说 zsh 是 shell 中的极品? - 韦易笑的回答 - 知乎

而 zsh 的安装可以查看社区里的这篇帖子:今天给大家推荐一个好用的shell --fexlou创作

关于bash的使用请看我的下一篇帖子:Linux命令

参考资料:

  1. 什么是 Linux Shell?
  2. 百度百科 - Linux shell
  3. 百度百科 - shell
  4. 终端与shell的区别
  5. Bash编程入门-1:Shell与Bash
  6. 《鸟哥的Linux私房菜》 -- 10.1.3 系统的合法 sehll 与 /etc/shells 功能。

# 更多UOS统一操作系统的教程,请关注「UOS教程栏目