内核是操作系统最里层的部分,shell(壳)就是操作系统最外层的部分,shell就像外壳一样将内核包起来。

    Linux操作系统是由很多部分组成的,其中最重要的两个部分就是:内核与shell(壳),如下图所示:

    内核是操作系统的核心,负责驱动硬件,让软硬件之间的通信成为可能。

    内核是操作系统最里层的部分,shell(壳)则是操作系统最外层的部分,shell就像外壳一样将内核包起来。用户通过终端来启动shell,shell可以接受用户的输入,并根据用户的指示去执行各种程序,还会将程序的执行结果反馈给用户。

    shell直接面向用户,内核则更多的面向底层硬件,shell中执行的程序,可以通过系统调用的方式和内核进行沟通,让内核驱动底层的硬件去执行各种实际的操作。

    在linux中主要有两种shell,一种是Bourne Shell(伯恩 shell),这个shell的提示符是$,它是由AT&T贝尔实验室的史蒂夫·伯恩,于1977年在Version 7 Unix中针对大学与学院发布的。其衍生产品Bourne Again Shell即bash,是linux系统中最流行的shell。

    另一种是C shell,它的命令提示符是%,由比尔·乔伊在BSD系统上开发。它也是Bourne shell的前身。这种shell的语法类似于C语言,不过,目前C shell已不再被广泛使用。

    我们在本篇文章中介绍的shell脚本,都是基于bash shell的。

什么是shell脚本

    shell脚本就是一个文件,里面存储了需要执行的一系列的命令,当在shell中运行shell脚本时,脚本中包含的命令就会被依次执行。适合于执行各种重复性的任务,例如,系统维护任务等。

    将需要重复执行的任务写成shell脚本,可以有效的减轻系统管理人员的负担。

    以下是在命令行中,创建shell脚本的常见步骤:

  1. 使用vi编辑器(或者其他的编辑器)创建一个文件,shell脚本的文件名通常以.sh作为扩展名。
  2. 使用 #! /bin/sh 作为脚本的开头,用于指示运行当前脚本所使用的shell解释器的路径(通常是/bin/sh),在执行时,就会使用该路径对应的shell解释器去解析并执行脚本。
  3. 在脚本文件中写入一些需要执行的命令,还可以写入一些脚本支持的语句,例如if语句即条件选择语句等。
  4. 保存脚本文件
  5. 在shell命令行中使用bash filename.sh来执行脚本,这里假设脚本文件名为filename.sh

    下面,让我们来创建一个简单的shell脚本,脚本中的内容如下:

#!/bin/sh
ls

    具体的创建并执行的过程,如下图所示:

    从上图中可以看到,当我们执行scriptsample.sh脚本时,就运行了脚本中的ls命令,从而将目录列表给显示了出来。

在脚本中添加注释

    写过程序的人,应该都知道注释的重要性,通过添加注释,可以帮助阅读代码的人能更好的理解代码的作用。在shell脚本中也可以使用注释,在脚本中添加注释的语法格式如下:

#comment

    脚本中的注释以#开头,#后面跟随注释的具体内容,例如下面这个例子:

在shell脚本中使用变量

    在shell脚本里,也可以使用变量来存储数据。例如,下面的脚本中就创建了一个变量,并将该变量的值给显示了出来:

variable ="Hello"
echo $variable

    上面脚本中先用=赋值符号,创建了一个名为variable的变量,并将"Hello"字符串信息赋值给了该变量。接着通过echo命令将该变量给显示了出来,在使用变量时,需要在前面添加$符号。

    我们还可以在脚本中接受用户的输入数据,并将这些输入数据赋值给变量,例如下面这个脚本:

#!/bin/sh
echo "what is your name?"
read name
echo "How do you do, $name?"
read remark
echo "I am $remark too!"

    该脚本的创建和执行情况,如下图所示:

    上面脚本中,通过read命令来接受用户的输入,并将输入的数据存储到name和remark变量,最后通过echo将这些变量的值给显示了出来。

    以上就是和shell脚本相关的简单的例子,在shell脚本中还可以使用条件语句,循环语句,和函数等,通过shell脚本可以减轻系统管理员的很多负担。

 

上下篇

下一篇: Linux中的Virtual Terminal(虚拟终端)

上一篇: Linux中的VI文本编辑器

相关文章

Linux系统中的logrotate命令用法详解:进行日志转储

Linux中的restore命令:还原dump操作备份下的文件、目录或分区

Linux系统mhash和mcrypt安装过程详解(LAMP环境搭建)

Linux系统中/etc/rc.d/rc.local配置文件用法

Linux系统中的sar命令详解:分析系统性能

Linux系统中的/boot/grub/grub.conf(GRUB配置文件)内容详解