Linux 命令行与 shell 脚本编程大全 (3rd ed)(3):初识 Linux shell 1.1.2

阅读数:11 2019 年 11 月 17 日 14:45

Linux命令行与shell脚本编程大全(3rd ed)(3):初识Linux shell 1.1.2

内容简介
这是一本关于 Linux 命令行与 shell 脚本编程的全方位教程,主要包括四大部分:Linux 命令行,shell 脚本编程基础,高级 shell 脚本编程,如何创建实用的 shell 脚本。本书针对 Linux 系统的新特性进行了全面更新,不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。通过本书的学习,你将轻松写出自己的 shell 脚本。

(GNU 工具)

除了由内核控制硬件设备外,操作系统还需要工具来执行一些标准功能,比如控制文件和程序。Linus 在创建 Linux 系统内核时,并没有可用的系统工具。然而他很幸运,就在开发 Linux 内核的同时,有一群人正在互联网上共同努力,模仿 Unix 操作系统开发一系列标准的计算机系统工具。

GNU 组织(GNU 是 GNU’s Not Unix 的缩写)开发了一套完整的 Unix 工具,但没有可以运行它们的内核系统。这些工具是在名为开源软件(open source software,OSS)的软件理念下开发的。

开源软件理念允许程序员开发软件,并将其免费发布。任何人都可以使用、修改该软件,或将该软件集成进自己的系统,无需支付任何授权费用。将 Linus 的 Linux 内核和 GNU 操作系统工具整合起来,就产生了一款完整的、功能丰富的免费操作系统。

尽管通常将 Linux 内核和 GNU 工具的结合体称为 Linux,但你也会在互联网上看到一些 Linux 纯粹主义者将其称为 GNU/Linux 系统,藉此向 GNU 组织所作的贡献致意。

1. 核心 GNU 工具

GNU 项目的主旨在于为 Unix 系统管理员设计出一套类似于 Unix 的环境。这个目标促使该项目移植了很多常见的 Unix 系统命令行工具。供 Linux 系统使用的这组核心工具被称为 coreutils(core utilities)软件包。

GNU coreutils 软件包由三部分构成:

  • 用以处理文件的工具
  • 用以操作文本的工具
  • 用以管理进程的工具

这三组主要工具中的每一组都包含一些对 Linux 系统管理员和程序员至关重要的工具。本书将详细介绍 GNU coreutils 软件包中包含的所有工具。

2. shell

GNU/Linux shell 是一种特殊的交互式工具。它为用户提供了启动程序、管理文件系统中的文件以及运行在 Linux 系统上的进程的途径。shell 的核心是命令行提示符。命令行提示符是 shell 负责交互的部分。它允许你输入文本命令,然后解释命令,并在内核中执行。

shell 包含了一组内部命令,用这些命令可以完成诸如复制文件、移动文件、重命名文件、显示和终止系统中正运行的程序等操作。shell 也允许你在命令行提示符中输入程序的名称,它会将程序名传递给内核以启动它。

你也可以将多个 shell 命令放入文件中作为程序执行。这些文件被称作 shell脚本。你在命令行上执行的任何命令都可放进一个 shell 脚本中作为一组命令执行。这为创建那种需要把几个命令放在一起来工作的工具提供了便利。

在 Linux 系统上,通常有好几种 Linux shell 可用。不同的 shell 有不同的特性,有些更利于创建脚本,有些则更利于管理进程。所有 Linux 发行版默认的 shell 都是 bash shell。bash shell 由 GNU 项目开发,被当作标准 Unix shell——Bourne shell(以创建者的名字命名)的替代品。bash shell 的名称就是针对 Bourne shell 的拼写所玩的一个文字游戏,称为 Bourne again shell。

除了 bash shell,本书还将介绍其他几种常见的 shell。表 1-2 列出了 Linux 中常见的几种不同 shell。

表 1-2 Linux shell

shell 描述
ash 一种运行在内存受限环境中简单的轻量级 shell,但与 bash shell 完全兼容
korn 一种与 Bourne shell 兼容的编程 shell,但支持如关联数组和浮点运算等一些高级的编程特性
tcsh 一种将 C 语言中的一些元素引入到 shell 脚本中的 shell
zsh 一种结合了 bash、tcsh 和 korn 的特性,同时提供高级编程特性、共享历史文件和主题化提示符的高级 shell

大多数 Linux 发行版包含多个 shell,但它们通常会采用其中一个作为默认 shell。如果你的 Linux 发行版包含多个 shell,就请尽情尝试不同的 shell,看看哪个能满足你的需要。

评论

发布