LINUX快速入门第八章:Shell基础

近期关于LINUX快速入门第八章:Shell基础的讨论热度持续攀升 ,我们通过多方渠道收集整理了相关资讯,并进行了系统化的梳理 。若这些内容恰好能为您提供参考,将是我们最大的荣幸。

我们平时所说的 Shell 可以理解为 Linux 系统提供给用户的使用界面。Shell 为用户提供了输入命令和参数并可得到命令执行结果的环境 。当一个用户登录 Linux 之后 ,系统初始化程序 init 就根据 /etc/passwd 文件中的设定,为每个用户运行一个被称为 Shell(外壳)的程序。

确切地说,Shell 是一个命令行解释器 ,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动 、挂起、停止甚至编写一些程序。

Shell 处在内核与外层应用程序之间,起着协调用户与系统的一致性、在用户与系统之间进行交互的作用 。图 1 是 Linux 系统层次结构图 ,Shell 接收用户输入的命令 ,并把用户的命令从类似 abed 的 ASCII 码解释为类似 0101 的机器语言,然后把命令提交到系统内核处理;当内核处理完毕之后,把处理结果再通过 Shell 返回给用户。

换句话说:

Shell 是一个用 C 语言编写的程序 ,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言 。

Shell 是指一种应用程序,这个应用程序提供了一个界面 ,用户通过这个界面访问操作系统内核的服务 。

Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

Shell 与其他 Linux 命令一样,都是实用程序 ,但它们之间还是有区别的。一旦用户注册到系统后,Shell 就被系统装入内存并一直运行到用户退出系统为止;而一般命令仅当被调用时,才由系统装入内存执行 。

与一般命令相比 ,Shell 除了是一个命令行解释器,同时还是一门功能强大的编程语言,易编写 ,易调试 ,灵活性较强。作为一种命令级语言,Shell 是解释性的,组合功能很强 ,与操作系统有密切的关系,可以在 Shell 脚本中直接使用系统命令。大多数 Linux 系统的启动相关文件(一般在 /etc/rc.d 目录下)都是使用 Shell 脚本编写的 。

同传统的编程语言一样,Shell 提供了很多特性 ,这些特性可以使 Shell 脚本编程更为有用,如数据变量 、参数传递、判断、流程控制 、数据输入和输出、子程序及中断处理等。

说了这么多,其实我们在 Linux 中操作的命令行界面就是 Linux 的 Shell ,也就是 Bash,但是我们的图形界面是 Shell 吗?其实从广义讲,图形界面当然也是 Shell ,因为它同样用来接收用户的操作,并传递到内核进行处理。不过,这里的 Shell 主要指的是 Bash 。

Shell 脚本

Shell 脚本(shell script) ,是一种为 shell 编写的脚本程序。

业界所说的 shell 通常都是指 shell 脚本 ,但读者朋友要知道,shell 和 shell script 是两个不同的概念。

由于习惯的原因,简洁起见 ,本文出现的 "shell编程" 都是指 shell 脚本编程,不是指开发 shell 自身 。

Shell的分类

目前 Shell 的版本有很多种,如 Bourne Shell、C Shell 、Bash 、ksh、tcsh 等 ,它们各有特点,下面简要介绍一下。

最重要的 Shell 是 Bourne Shell,这个命名是为了纪念此 Shell 的发明者 Steven Bourne。从 1979 年起 ,UNIX 就开始使用 Boume Shell 。Bourne Shell 的主文件名为 sh,开发人员便以 sh 作为 Bourne Shell 的主要识别名称 。

虽然 Linux 与 UNIX 一样,可以支持多种 Shell ,但 Boume Shell 的重要地位至今仍然没有改变,许多 UNIX 系统中仍然使用 sh 作为重要的管理工具。它的工作从开机到关机,几乎无所不包。在 Linux 中 ,用户 Shell 主要是 Bash ,但在启动脚本、编辑等很多工作中仍然使用 Bourne Shell 。

C Shell 是广为流行的 Shell 变种。C Shell 主要在 BSD 版的 UNIX 系统中使用,发明者是柏克莱大学的 Bill Joy。C Shell 因为其语法和 C 语言类似而得名,这也使得 UNIX 的系统工程师在学习 C Shell 时感到相当方便 。

Bourne Shell 和 C Shell 形成了 Shell 的两大主流派别 ,后来的变种大都吸取这两种 Shell 的特点,如 Korn 、 tcsh 及 Bash。

Bash Shell 是 GNU 计划的重要工具之一,也是 GNU 系统中标准的 Shell。Bash 与 sh 兼容 ,所以许多早期开发出来的 Bourne Shell 程序都可以继续在 Bash 中运行 。现在使用的 Linux 就使用 Bash 作为用户的基本 Shell。

Bash 于 1988 年发布,并在 1995-1996年推出Bash 2.0。在这之前,广为使用的版本是1.14 ,Bash 2.0增加了许多新的功能,以及具备更好的兼容性 。表 2 中详细列出了各版本的具体情况。

注意,Shell 的两种主要语法类型有 Bourne 和 C ,这两种语法彼此不兼容。Boume 家族主要包括 sh、ksh、Bash 、psh、zsh;C 家族主要包括 csh、tcsh(Bash 和 zsh 在不同程序上支持 csh 的语法) 。

本章讲述的脚本编程就是在 Bash 环境中进行的 。不过,在 Linux 中除了可以支持 Bash,还可以支持很多其他的 Shell。我们可以通过 /etc/shells 文件来査询 Linux 支持的 Shell。命令如下:

在 Linux 中 ,这些 Shell 是可以任意切换的 ,命令如下:

用户信息文件 /etc/passwd 的最后一列就是这个用户的登录 Shell 。命令如下:

大家可以看到,root 用户和其他可以登录系统的普通用户的登录 Shell 都是 /bin/bash,也就是 Linux 的标准 Shell ,所以这些用户登录之后可以执行权限允许范围内的所有命令。不过,所有的系统用户(伪用户)因为登录 Shell 是 /sbin/ndogin,所以不能登录系统。

笔记:

sh/bash/csh/Tcsh/ksh/pdksh等shell的区别

怎样编写Linux shell script

编写shell脚本 首先你要有Linux命令的基础 ,怎么进入文件,怎么执行文件,有什么命令等等 。

我们的shell 类型有很多 ,常见的shell环境有sh,bash,csh ,zsh等等。在Linux的脚本中可以最常见的就是 ?sh或者shell。在shell脚本中最开始 要指定shell环境 。于是乎我们有了shell的沙邦:?

/bin/sh 或者/bin/bash

shell脚本的格式:shell脚本一般是以*.sh 为名字,在权限上面是有可执行权限x的也就是chmod u+x *.sh

命令的执行:3种:

sh 脚本路径/脚本名

cd 脚本路径 && ./脚本名

soure 脚本路径/脚本

写一个最简单的脚本吧:

[root@linuxprobe ~]#vim 1.sh

/bin/sh

echo "this is my frist scripts,more and more linux ,you can read 《Linux就该这样学》"

[root@linuxprobe ~]#chmod u+x 1.sh

[root@linuxprobe ~]#./1.sh

this is my frist scripts,more and more linux ,you can read 《Linux就该这样学》

学习Linux需要多学多练

Shell通常比喻是人与计算机硬件的“翻译官 ”,Shell作为用户与Linux系统通讯的媒介 ,自身也定义了各种变量与参数 ,并提供了诸如循环 、分支等高级语言才有的控制结构特性。如何正确的使用这些功能,准确下达命令就显得尤为重要。

Shell的工作形式分为两种

1.交互式(Interactive):用户输入一条命令,Shell解释并执行一条 。

2.批处理(Batch):用户事先编写一个Shell脚本(Script) ,其中包含诸多命令,Shell会一次执行完所有命令。

编译简单的脚本

Shell脚本的编写要使用到Vim文本编辑器,按照命令的执行顺序依次编写 ,每行写一条Linux命令。并且一个完整的Shell脚本则应该包括“脚本声明”、“注释信息”和“可执行语句 ” 。

编写脚步的规范:

脚本声明(#!):告知系统用何种shell来解释 。

注释信息(#):对可执行语句或程序功能做介绍,可以不写。

可执行语句:执行的具体命令。

编写一个简单的Shell脚本吧,功能是显示当前的工作路径并列出当前目录下的所有文件与属性 。

[root@linuxprobe?~]#?vim?Example.sh

#!/bin/bash

#For?Example?BY?linuxprobe.com

pwd

ls?-al

执行脚本有三种方法:

脚本文件路径:./Example.sh

sh脚本文件路径:sh Example.sh

source脚本文件路径:source Example.sh

学习shell脚步入门 ,推荐你到《linux就该这么学》这本书上看看,讲解的很详细,同时还能学到更得linux教程。

关于LINUX快速入门第八章:Shell基础的相关内容介绍到此告一段落 ,若这些信息对您有所启发,欢迎持续关注本站获取更多优质内容。

本文来自作者[帜狐]投稿,不代表幺幺号立场,如若转载,请注明出处:https://yyhz.net/yaoyao/1154.html

(47)
帜狐的头像帜狐签约作者

文章推荐

发表回复

作者才能评论

评论列表(3条)

  • 帜狐的头像
    帜狐 2025年09月18日

    我是幺幺号的签约作者“帜狐”

  • 帜狐
    帜狐 2025年09月18日

    本文概览:近期关于LINUX快速入门第八章:Shell基础的讨论热度持续攀升,我们通过多方渠道收集整理了相关资讯,并进行了系统化的梳理。若这些内容恰好能为您提供参考,将是我们最大的荣幸。...

  • 帜狐
    用户091806 2025年09月18日

    文章不错《LINUX快速入门第八章:Shell基础》内容很有帮助