一、Shell可以用来做什么
1.自动化批量系统初始化程序;
2.自动化批量软件部署程序;
3.应用程序管理;
4.日志分析处理程序;
5.自动化备份恢复程序;
6.自动化信息采集及监控程序;
7.自动化管理程序;
二、Shell概述
1.Shell是操作系统的外壳,是用户操作系统的命令接口,是一个介于用户和系统内核之间的桥梁。Shell接受用户以命令方式输入的命令(包括系统提供的内部命令、独立存在于某个目录下的程序),也能解释执行由Shell命令编写的Shell程序。Shell还是一个功能强大的编程语言,易编写、易调试、灵活性强。
2.Shell脚本就是将完成一个任务的所有的命令按照执行的先后程序,自上而下写入到一个文本文件中,然后给予执行权限。Shell语言编写的程序仅能在使用UNIX和Linux的计算机上使用。
3.Shell脚本中支持绝大多数编程语言中所能见到的程序控制结构,可以使用注释(“#”)对脚本的功能进行说明,可以使用条件测试表达式进行分支判断,可以使用循环语句处理大量数据,可以定义使用变量、数组等。Shell脚本也提供对函数的支持。Shell脚本是解释执行而不是编译执行。Shell编程的实质是连续自动执行一系列命令。
4.Shell是一个功能强大的计算环境,既可以将其作为命令解释器,也可以将其作为编程语言。Shell的功能主要包括以下几个方面。
接受来自键盘的命令;
- 检查命令的正确性;
- 命令错误则给出报错信息;
- 命令正确则使用相应的系统调用执行命令(产生进程);
- 命令执行完毕,给出命令执行的结果;
5.Shell脚本具有如下优点:
- 一次性完成目标;
- 不用重复键入一系列命令;
- 简化用户的操作;
三、Shell基础知识
最常用的Shell包括Bourne Again Shell 、Bourne Shell、C Shell 、Korn Shell和Perl Shell等。下面均以流行的Bourne Again Shell 为例说明。Bourne Again Shell (简称Bash)是Linux默认的Shell,也是最流行的一种Shell,各个版本的UNIX和Linux几乎都支持Bash。UNIX、Linux都是区分大小写的,Shell脚本同样也是区分大小写的。
1.I/O重定向
在Linux系统中,数据流可分为3类:
- 数据输入
- 数据输出
- 错误输出
标准输入通常是指传给一个命令的键盘输入。标准输出是一个命令的执行结果,通常标准输出被定向到显示器。可以利用管道把这些数据流之一输送给另外一条命令,也可以利用I/O重定向把这些数据流之一重定向到一个文件。管道和I/O重定向是Linux系统中特有的概念。所谓管道是指将某个命令的输出结果传送到另一个命令,当成另外一个命令的输入,其代表符号是“|”。所谓I/O重定向是指将命令执行结果重新导出到其他设备或文件(以“>”或“>>”来表示),或是重新导入到其他设备或文件(以“<”或“<<”来表示)。常用的输入输出重定向命令格式与执行结果如下图所示:
管道符实例:
利用管道将"ls -al"命令的输出结果输入到more 或less命令,可以实现分页显示,命令如下:
`
#ls -al /etc | less
`
输出重定向实例:
1).以覆盖方式把正确输入和错误输入都保存在同一个文件中 命令 &> 文件
2).以追加方式把正确输入和错误输入都保存在同一个文件中 命令 &>> 文件
3).以追加方式把正确输入保存在文件1中,把错误输入保存在文件2中 命令 >> 文件1 2>> 文件2
2.Shell通配符
Shell中支持使用通配符,常用的通配符如下所示:
?:表示任意的单个字符;
*:表示任意长度的任意字符串;
[ ]:表示匹配放在[ ]中的字符集中的任意一个字符;
{ }:将大括号中的字符串以及前导字符串和后继字符串作为匹配条件;
3.单引号、双引号及反引号
Shell中使用三种引号:双引号、单引号和反引号。其中,双引号对字符串中出现的“$”、“""”、“`”和“\”进行替换;单引号不进行替换,将字符串作为普通字符串输出;反引号会将字符串作为命令执行,并返回执行的结果。其具体含义如下所示。
双引号(“ ”):在双引号中的字符,除了“$”、“""”、“`”和“\”以外的所有字符都被解释成字符本身。
单引号(' '):在单引号中的所有特殊字符(如“$”、“""”、“`”和“\”)都失去特殊意义,而成为普通字符。
反引号(` `):在反引号中的字符被解释成命令,例如,`cmd`会被解释成命令cmd执行的结果。
4.指定使用的Shell
Shell脚本文件的第一行通常会放置一行特殊的字符串,告诉操作系统使用哪个Shell来执行这个文件。
创建test.sh文件,输入下面内容:
#!/bin/bash
echo "hello world"
5.运行脚本
运行脚本有三种方法:
(1)、通过chmod命令把文件的权限设置成可读、可执行,然后直接执行该可执行文件,格式如下:
chmod u+x 脚本文件名 或 chmod 755 脚本文件名
./脚本文件名及其参数
(2)、直接使用Shell的启动命令来执行脚本。
bash 脚本文件名及其参数
(3)、使用bash内部命令“source”或“.”运行Shell脚本。
source 脚本文件名及其参数
或
. 脚本文件名及其参数
注:“.”和后面的程序名称之间要留有空格
bash实例如下: