shell教程第0篇--shell是什么[亲测有效]

(40) 2023-05-18 19:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说shell教程第0篇--shell是什么[亲测有效],希望能够帮助你!!!。

shell教程第0篇--shell是什么

本文是shell教程第0篇,主要介绍shell编程的基本知识。

  • 首先介绍shell是什么,介绍shell在linux/unix中的重要作用
  • 接下来会厘清shell中的一些概念,区分shell和shell script
  • 一般系统带的shell都及其难用,这里介绍如何配置shell让工作更加顺手
  • shell script是我们重点学习的内容,接下来简要分析一下shell编程的难点和我们学习的过程
  • 最后会给出整个教程的目录,方便大家按照自己的需要查阅

shell是什么

在影视作品中,常常看到一个天才在电脑面前敲几下代码,然后就成功地黑进了对方服务器,然后把对方给制服了。而他面对的黑色界面,通常就是一个shell。其实你内心会想,为啥不是一路鼠标点击下一步?

计算机早期只有键盘(没有鼠标),所有和计算机的交互都是通过键盘输入命令来实现。比如我们在命令行(terminal中)输入ls,就可以显示当前目录下的文件。

但其实从输入ls到在屏幕上显示文件夹这是一个很复杂的过程。要点就是我们通过shell来调用计算机操作系统的内核,操作系统的内核来控制硬件做出相应的行为。

下面讲一个冗长的故事来说明这个问题。如果不愿意看,可以略过。
电子计算机是一堆实实在在的物理器件搭建起来的。屏幕上能的文字,硬盘中存储文件,都是因为硬件中的电路改变的结果。操作计算机,其实是对硬件的操作。但是硬件确实是很复杂的东西,复杂到人脑大约装不下。简单的硬件比如说电子手表,复杂的硬件比如说计算机芯片:别说操作硬件了,就连看懂电路图都很困难;遑论把它们组装起来实现一定的功能。此时,人们的处理办法是分块处理。定义好各个部分之间的连接和接口,把每个模块开发好,然后连接起来一起处理。不同模块实现不同功能,最终各个击破,实现我们想要的效果。
低级的功能在底层实现,高级的功能在顶层实现。低级的功能通过组合就是高级的功能。比如说控制屏幕上特定的一个点显示的颜色是一个低级的功能,这个是人脑能够处理的。我们先把这个东西搞好。然后通过组合,就可以实现对屏幕上所有点的控制,这就是高级功能。

低级功能和高级功能之间必然存在接口,这样才能从上往下发命令,从下往上反馈结果。在计算机中,硬件处于底层,而我们对计算的操作处于顶层,顶层和底层之间联系的通道就是shell。

再举一个建房子的的例子。工人擅长搬砖,砌墙啥,项目负责人来指挥,起初要建房的人,不会和工人直接谈,而是会经过项目负责人来谈。这里的shell就是起初建房的人和项目负责人的语言。

在计算机中,操作内核的也不只有shell,常见的软件也是可以操作到系统内核的。最常见的图形界面,也是会操作系统内核的。

不过shell在Unix/Linux等机器上具有效率高,可以短期大量操作的优点,所以成为运维的需要。

常见的shell

从前面的讲述中可以了解到,shell并不是操作内核的唯一方式。这里也可以做一点小小推断,不同的shell也可以操作内核,实现相同功能。实际也是有多个shell可以使用。最常见的shell是bash,也有sh和zsh。通常裸的bash是很难用的,特别是你用过配置过后的zsh。

shell script

shell中本身可以执行命令,有时候就是一条一条命令的堆叠。针对我们要实现的功能,我们把它们写到一个文件里面,从上到下串行执行。这个就是shell script。
shell是执行shell script的环境,我们学习shell,主要是学习shell script的编写方式。

shell script编写难处

我们写c++,写python,都有调试的过程。代码写得对不对,不是自己说了算,还是要真刀实枪地上机器运行,便知分晓。
当然,这个调试需要有一堆调试环境。或者要集成开发环境。但是在shell script中,则几乎没有这样的环境,只能实际到系统中去运行,但是对与错误的反馈总是不那么智能。

特别是某些针对文件夹的操作,你调试一次,建立了文件夹。条件就又和你上次不一样了。

另外,shell script的语法,和python c++啥的,又有明显的不同。如果你是先学的c++或者python,然后来学shell script,就会觉得shell中有些语法很莫名其妙。

shell script学习方式

这个又是老生常谈的话题了。如何学习shell script,方式就是不断练习。
本系列教程的目录如下:

  • shell的配置
  • shell与shell script的区别(本文)
  • shell script中的变量
  • shell script中变量的运算
  • shell script对文件夹的判断
  • shell script中选择分支循环结构的书写

上一篇

已是最后文章

下一篇

已是最新文章

发表回复