shell脚本系列:1、shell、bash和shell脚本

shell脚本系列:1、shell、bash和shell脚本


文章目录

  • shell脚本系列:1、shell、bash和shell脚本
    • 1. 前言
    • 2. shell、Bash、shell script简介
      • 2.1 shell
      • 2.2 Bash
      • 2.3 shll script
    • 3. 相关资料
    • 4. 专有名词定义
    • 5. shell基础特性

1. 前言

如果要更多的学习和了解类Unix系统,则需要对shell有学习,如果要对Windows有更多的学习和了解,则需要学习bat和powershell,当然,我们不必把这当成一种负担,如果你的工作非常需要可以详细了解学习,这是你的本职,如果你感兴趣的话也可以研究一下,不感兴趣也不是非常需要的话在实际应用中通过查找资料可以搞定即可。

2. shell、Bash、shell script简介

如果你直接搜索shell,你会发现一个壳(qiao)牌石油公司,我在大学学化学的时候倒是对壳牌挺了解的,但是我们要了解的shell也不是这个公司,而是shell这个软件,所以在搜索时可以搜索Unix shell或者Linux shell。

2.1 shell

Unix shell,一种壳层与命令行界面,是UNIX操作系统下传统的用户和计算机的交互界面。第一个用户直接输入命令来执行各种各样的任务。

普通意义上的shell就是可以接受用户输入命令的程序。它之所以被称作shell是因为它隐藏了操作系统低层的细节。同样的Unix下的图形用户界面GNOME和KDE,有时也被叫做“虚拟shell”或“图形shell”。

Unix操作系统下的shell既是用户交互的界面,也是控制系统的脚本语言。当然在这点也有别于Windows下的命令行,虽然也提供了很简单的控制语句。在Windows操作系统下,可能有些用户从来都不会直接的使用shell,然而在Unix系列操作系统下,shell仍然是控制系统启动、X Window启动和很多其他实用工具的脚本解释程序。

2.2 Bash

Bash 是 GNU 项目的外壳——Bourne Again SHell。这是一个与 sh 兼容的 shell,它结合了 Korn shell (ksh) 和 C shell (csh) 的有用功能。它旨在符合 IEEE POSIX P1003.2/ISO 9945.2 外壳和工具标准。它为编程和交互使用提供了对 sh 的功能改进。此外,大多数 sh 脚本无需修改即可由 Bash 运行。

2.3 shll script

外壳脚本(英语:Shell script),又称Shell脚本Shell命令稿程序化脚本,是一种电脑程序使用的文本文件,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作。被当成是一种脚本语言来设计,其运作方式与解释型语言相当,由Unix shell扮演命令行解释器的角色,在读取shell脚本之后,依序运行其中的shell命令,之后输出结果。利用shell脚本可以进行系统管理,文件操作等。

在Unix及所有的类Unix系统中,如Linux、FreeBSD等操作系统,都存在shell脚本。依照Unix shell的各种不同类型,shell脚本也有各种不同方言。在DOS、OS/2、Microsoft Windows中的批处理文件,跟shell脚本有类似的功能。

想了解更多shell、bash的内容也可以在接下来给到的bash参考手册中详细查看。

3. 相关资料

由于我们主要是使用GUN/Linux,所以主要也是接触Bash和Bash脚本。

gun/bash:https://www.gnu.org/software/bash/

bash主页:https://tiswww.case.edu/php/chet/bash/bashtop.html

bash参考手册:https://tiswww.case.edu/php/chet/bash/bashref.html

接下来我将按照Bash参考手册和我工作上可能常用的内容做总结,有需要的同学可以在官网获取一手资料,也可以根据我的划分方式来了解Bash的基础用法,当对脚本和系统有一定程度的了解后也许也可以成为一个脚本小子_

4. 专有名词定义

这些定义将贯穿本手册的其余部分。

POSIX:一组基于Unix的开放系统标准。Bash主要涉及POSIX 1003.1标准的Shell和实用程序部分。
blank:空格或制表符。
builtin:由shell本身内部实现的命令,而不是由文件系统中某个可执行程序实现的命令。
control operator:执行控制功能的令牌。这是一个换行符或以下之一 : ‘||’, ‘&&’, ‘&’, ‘;’, ‘;;’, ‘;&’, ‘;;&’, ‘|’, ‘|&’, ‘(’, 或“)”。
exit status:命令返回给调用者的值。该值限制为8位,因此最大值为255。
field:一个文本单元,它是一个shell扩展的结果。扩展后,当执行命令时,产生的字段将用作命令名和参数。
filename:用来标识文件的一串字符。
job:由管道及其派生的一组进程组成的很多进程,它们都在同一个进程组中。
job control:一种机制,用户可以有选择地停止(挂起)和重新启动(恢复)进程的执行。
metacharacter:一个字符,当不加引号时,将单词隔开。元字符可以是空格、制表符、换行符或以下字符之一:' | '、' & '、';'、'(',')'、' < '或' > '。
name:仅由字母、数字和下划线组成,且以字母或下划线开头的单词。名称用作shell变量名和函数名。也称为标识符。
operator:控制操作符或重定向操作符。有关重定向操作符的列表,请参见重定向。操作符至少包含一个未加引号的元字符。
process group:相关进程的集合,每个进程具有相同的进程组ID。
process group ID:在进程组生命周期内表示它的唯一标识符。
reserved word:一个对shell有特殊意义的词。大多数保留字引入shell流控制结构,如for和while。
return status:`exit status`的同义词。
signal:内核可以通过这种机制通知进程系统中发生的事件。
special builtin:被POSIX标准归类为特殊的shell内置命令。
token:被shell视为单个单元的字符序列。它要么是一个单词,要么是一个操作符。
word:shell作为一个单元处理的字符序列。单词不能包含不带引号的元字符。

5. shell基础特性

Bash是“Bourne-Again SHell”的首字母缩写。Bourne shell是由Stephen Bourne最初编写的传统Unix shell。所有Bourne shell内建命令都可以在Bash中使用,求值规则和引用来自于“标准”Unix shell的POSIX规范。

本章简要总结了shell的“构建块”:命令、控制结构、shell函数、shell参数、shell扩展、重定向(一种从命名文件和到命名文件的输入和输出的直接方式),以及shell如何执行命令。

• Shell Syntax 你的输入对shell意味着什么。
• Shell Commands 您可以使用的命令类型。
• Shell Functions 按名称分组命令。
• Shell Parameters shell如何存储值。
• Shell Expansions Bash如何扩展参数和可用的各种扩展。
• Redirections 一种控制输入和输出方向的方法。
• Executing Commands 运行命令时会发生什么。
• Shell Scripts 执行shell命令的文件。

ok,接下来我们根据上面的特性做总结,实际上我们基础了解上面的特性后使用shell也是够用了,在一些特殊场景可能也有一些高级的工具会扩展shell,比如’'shell三剑客",当然,这些都根据实际情况来了解学习以及总结即可,大可不必死记硬背。

接下里的内容建议打开Linux发行版或者mac终端的shell,根据学习的内容在shell上进行实践,了解基础的使用和语法,最终学完所有特性后可以写出来一个比较规范和完整的shell脚本即可,你会发现shell是很有意思的并且对你后续的使用和维护unix及类unix系统都很有帮助。

你可能感兴趣的:(shell脚本,shell)