Shell编程讲稿解密.docx

上传人:b****5 文档编号:4099505 上传时间:2022-11-27 格式:DOCX 页数:103 大小:146.14KB
下载 相关 举报
Shell编程讲稿解密.docx_第1页
第1页 / 共103页
Shell编程讲稿解密.docx_第2页
第2页 / 共103页
Shell编程讲稿解密.docx_第3页
第3页 / 共103页
Shell编程讲稿解密.docx_第4页
第4页 / 共103页
Shell编程讲稿解密.docx_第5页
第5页 / 共103页
点击查看更多>>
下载资源
资源描述

Shell编程讲稿解密.docx

《Shell编程讲稿解密.docx》由会员分享,可在线阅读,更多相关《Shell编程讲稿解密.docx(103页珍藏版)》请在冰豆网上搜索。

Shell编程讲稿解密.docx

Shell编程讲稿解密

 

Shell编程

讲稿

Version1.0

ShellProgramming

 

达内IT培训集团

加拿大达内集团

研发二部

修订历史

摘要

日期

修改原因

版本

文档创建

2009-4-10

新建

1.0

目录

1.Unix/LinuxShell介绍7

目的7

1.技术7

2.技能7

1.1.Shell类型7

1.1.1.什么是shell7

1.1.2.Shell的两大类型7

1、Bourneshell(包括sh,ksh,andbash)7

2、Cshell(包括cshandtcsh)8

3、几个shell的特别说明8

1.2.Shell与环境9

1.2.1.CSH环境9

1.2.1.1系统配置文件:

9

1.2.1.2用户配置文件:

9

1.2.2.BASH环境9

1.2.2.1系统配置文件9

1.2.2.2用户配置文件9

1.2.3.课堂练习10

1.2.4.练习作业11

1.3.Shell参数11

1.3.1.csh参数11

1.3.2bash参数11

2.BashShell编程基础13

2.1.第一个简单的shell脚本13

2.1.1.目的13

2.1.2.知识点说明13

2.1.3.案例13

2.1.4.课堂练习14

2.2.输出输入与重定向符号15

2.2.1.目的15

2.2.2.知识点说明15

2.2.2.1.输出重定向符号15

2.2.2.2.输入重定向符号15

2.2.2.3.错误重定向符号15

2.2.2.4.关于IO重定向与CSH的说明16

2.2.3.案例16

2.2.4.课堂练习16

2.3.特殊元字符17

2.3.1.目的17

2.3.2.知识点说明17

2.3.3.案例17

2.3.4.课堂练习18

2.4.变量与常量18

2.4.1.目的18

2.4.2.知识点说明18

2.4.2.1.变量的定义18

2.4.2.2.变量的使用19

2.4.2.3.read与line指令19

2.4.2.4.环境变量19

2.4.2.5.特殊变量20

2.4.2.6export变量20

2.4.3.案例20

2.4.4.课堂练习22

2.5.引用22

2.5.1.目的22

2.5.2.知识点说明23

2.5.2.1.单引号23

2.5.2.2.双引号23

2.5.2.3.`命令引用号23

2.5.3.案例23

2.5.4.课堂练习23

2.6.数组24

2.6.1.目的24

2.6.2.知识点说明24

2.6.3.案例24

2.6.4.课堂练习25

2.7.运算符号26

2.7.1.目的26

2.7.2.知识点说明26

2.7.3.案例28

2.7.4.课堂练习30

2.8.判定分支31

2.8.1.目的31

2.8.2.知识点说明31

2.8.2.1.使用if判定分支31

2.8.2.2.一般测试32

2.8.2.3.文件测试32

2.8.2.4.BASH选项测试32

2.8.2.5.退出状态码与true|false指令33

2.8.2.6.case语句33

2.8.2.7.嵌套if34

2.8.3.案例34

2.8.4.课堂练习36

2.9.循环36

2.9.1.目的36

2.9.2.知识点说明36

2.9.2.1.for循环语法36

2.9.2.2.while循环语法37

2.9.2.3.until循环语法37

2.9.2.4.continue与break使用38

2.9.2.5.select语法(选)38

2.9.2.6.shift语法(选)38

2.9.3.案例39

2.9.4.课堂练习39

2.10.函数39

2.10.1.目的39

2.10.2.知识点说明40

2.10.2.1.函数语法40

2.10.2.2.函数的参数与返回值40

2.10.2.3.函数嵌套与特殊用法41

2.10.2.4.函数与重定向42

2.10.2.5.变量与函数42

2.10.3.案例43

2.10.4.课堂练习43

2.11.子shell44

2.11.1.目的44

2.11.2.知识点说明44

2.11.2.1.子SHELL调用方式44

2.11.2.2.子SHELL调用说明45

2.11.2.3.受限SHELL脚本45

2.11.3.案例45

2.11.4.课堂练习46

2.11.5.思考与提高46

2.12.内建命令46

2.12.1.目的46

2.12.2.知识点说明46

2.12.3.案例54

2.12.4.课堂练习54

2.12.命令与程序54

2.12.1.目的54

2.12.2.知识点说明54

2.12.2.1.基本命令54

2.12.2.2.高级命令55

2.12.2.3.时间/日期命令55

2.12.2.4.文本处理命令55

2.12.2.5.文件与归档命令56

2.12.2.6.通讯命令57

2.12.2.7.终端控制命令58

2.12.2.8.数学计算命令58

2.12.2.9.其他命令58

2.12.3.案例58

2.12.4.课堂练习59

2.13.命令与进程替换59

2.13.1.目的59

2.13.2.知识点说明59

2.13.2.1.命令替换59

2.13.2.2.进程替换60

2.13.3.案例60

2.13.4.课堂练习60

3.BashShell编程高级应用61

3.1.grep与正则表达式61

3.2.SED流编辑64

3.3.gawk调用64

3.4.Shell扩展65

附录66

BASH系统环境变量参考66

1.保留的Bourneshell变量66

2. Bash保留变量66

PS特殊转义字符69

BASH转义字符69

内建命令(补充)69

printf69

1.Unix/LinuxShell介绍

目的

1.技术

1.1了解SHELL类型与SHELL的发展历史。

1.2了解BASH与CSH的参数。

1.3了解登入/登出SHELL要执行的相关文件。

2.技能

1.登入/登出Unix系统

2.查看环境变量

3.根据需要修改配置SHELL登录相关文件

1.1.Shell类型

1.1.1.什么是shell

字符操作系统与外部最主要的接口就叫做shell。

shell是操作系统最外面的一层。

shell管理你与操作系统之间的交互:

等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。

  shell提供了你与操作系统之间通讯的方式。

这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shellscript(非交互)方式执行。

shellscript是放在文件中的一串shell和操作系统命令,它们可以被重复使用。

本质上,shellscript是命令行命令简单的组合到一个文件里面。

  Shell基本上是一个命令解释器。

1.1.2.Shell的两大类型

在UNIX中主要有两大类shell:

1、Bourneshell(包括sh,ksh,andbash)

最初的UNIXshell是由StephenR.Bourne于20世纪70年代中期在新泽西的AT&T贝尔实验室编写的,这就是Bourneshell。

Bourneshell是一个交换式的命令解释器和命令编程语言。

Bourneshell可以运行为loginshell或者loginshell的子shell(subshell)。

只有login命令可以调用Bourneshell作为一个loginshell。

此时,shell先读取/etc/profile文件和$HOME/.profile文件。

/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。

最后,shell会等待读取你的输入。

Bourneshell(sh)

Kornshell(ksh)

BourneAgainshell(bash)

POSIXshell(sh)

2、Cshell(包括cshandtcsh)

BillJoy于20世纪80年代早期,在Berkeley的加利福尼亚大学开发了Cshell。

它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。

它新增了命令历史、别名、文件名替换、作业控制等功能。

Cshell(csh)

TENEX/TOPSCshell(tcsh)

说明:

Shell的程序在/bin/目录下

✓/bin/sh

✓/bin/ksh

✓/bin/bash

✓/bin/csh

✓/bin/tcsh

3、几个shell的特别说明

·KornShell

有很长一段时间,只有两类shell供人们选择,Bourneshell用来编程,Cshell用来交互。

为了改变这种状况,AT&T的bell实验室DavidKorn开发了Kornshell。

ksh结合了所有的Cshell的交互式特性,并融入了Bourneshell的语法。

因此,Kornshell广受用户的欢迎。

它还新增了数学计算,进程协作(coprocess)、行内编辑(inlineediting)等功能。

KornShell是一个交互式的命令解释器和命令编程语言.它符合POSIX

说明:

[POSIX是一个操作系统的国际标准,POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台]

·BourneAgainShell(bash)

bash是GNU计划的一部分,用来替代Bourneshell。

它用于基于GNU的系统如Linux.大多数的Linux(RedHat,Slackware,Caldera,Suse)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。

·POSIXShell

POSIXshell是Kornshell的一个变种.当前提供POSIXshell的最大卖主是Hewlett-Packard。

在HP-UX11.0,POSIXshell就是/bin/sh,而bsh是/usr/old/bin/sh.

说明:

各主要操作系统下缺省的shell:

AIX下是KornShell.

Solaris和FreeBSD缺省的是Bourneshell.

HP-UX缺省的是POSIXshell.

RedhatLinux是BourneAgainshell.

1.2.Shell与环境

不管用户使用什么shell做为登录的缺省shell,登录都需要事先执行一些脚本文件。

1.2.1.CSH环境

1.2.1.1系统配置文件:

/etc/.login

1.2.1.2用户配置文件:

$HOME/.login

$HOME/.cshrc

1.2.2.BASH环境

1.2.2.1系统配置文件

/etc/profile

1.2.2.2用户配置文件

$HOME/.bash_login

$HOME/.profile

$HOME/.bash_profile

1.2.3.课堂练习

1.使用man查看csh帮助。

操作:

输入mancsh

显示:

2.使用ls-a查看$HOME下是否有.cshrc与.login文件存在。

操作:

输入ls–a

显示:

3.新增或修改.cshrc和.login文件。

修改.cshrc。

操作:

输入vi.cshrc

修改.login。

操作:

输入vi.login

4.重新登录体会两个文件执行的先后顺序。

操作

5.思考

1.把.cshrc与.login文件内容交换再操作一遍,体会两个文件的执行顺序。

2.可以在.cshrc中输入echo1,在.login输入echo2,重新登录,根据输出的先后顺序可以很容易知道先后顺序。

6.提高

当.cshrc文件执行错误,.login文件不会再执行。

1.2.4.练习作业

1、仿照课堂练习的步骤,在Linux系统下增加登录初始化文件,并登录体会每个用户级别初始化文件的加载顺序,以及文件执行错误后面文件是否正常执行。

[练习目的:

体会BASH做为登入SHELL的初始化文件.bash_login、.profile、.bash_profile执行顺序]

[提示:

执行顺序是]

1.3.Shell参数

1.3.1.csh参数

语法:

csh[-befHinstvVxX][-c[script]][arg...]

1.3.2bash参数

语法:

bash[bash_options]-s[±abCefGHhiKkLmNnPprtuvwXx][±ooption][-ddirectory][-Rname,env_piece,cmds][argument...]

bash_option说明:

--login

先执行.bash_login文件.

--init-filefile

--rcfilefile

在交互模式下,替代($HOME/.bashrc)去执行指定的文件

--noprofile

不执行搜索并如下文件

$ROOTDIR/etc/profile.ksh

$HOME/.bash_profile

$HOME/.bash_login

$HOME/profile.ksh

$HOME/.profile

--norc

在交互模式下不执行$HOME/.bashrc文件

--restricted

等价-r选项

--verbose

等价-v选项

--version

显示版本信息

2.BashShell编程基础

2.1.第一个简单的shell脚本

2.1.1.目的

技术

1、执行shell脚本。

2、使用指定的shell执行shell脚本。

3、注释

4、语句结束符号

技能

1、能使用一种编辑工具正确编写shell脚本,并执行。

2、能根据需要在shell脚本中指定shell类型。

2.1.2.知识点说明

1、执行shell脚本。

Shell脚本如果正确并且对当前用户有执行权限的话,可以像执行一般程序那样执行,就是直接在命令行输入shell脚本名执行,或者在可视窗体中点击执行。

但在某些特殊情况下可以采用其他的执行方式。

a.execshell脚本名

b.sourceshell脚本名

具体的区别在后面讲子shell的时候解释。

3、指定shell类型。

a.在命令行指定。

Shell名shell脚本名。

b.在shell脚本中指定。

语法:

#!

shell路径与文件

例子:

#!

/bin/bash

4、注释。

#注释内容

5、语句结束符号。

语句结束符号两种方式:

分号结束或者直接换行

2.1.3.案例

1、编写shell脚本。

方法一:

使用telnet或其他终端登录工具登录,并使用vi编辑脚本。

方法二:

使用UltraEdit工具本地编辑,并FTP保存倒Unix服务器。

2、确保脚本的执行权限。

chmodo+xshell脚本文件名

3、使用登录shell执行shell脚本。

方法一:

在命令行直接输入shell脚本文件名并回车执行。

方法二:

execshell脚本文件名。

方法三:

sourceshell脚本文件名。

体会exec与source的区别,详细的说明见后面内容。

4、在命令行指定shell执行shell脚本。

bashshell脚本文件名。

或者

cshshell脚本文件名。

5、在shell脚本中指定shell执行shell脚本。

#!

/bin/csh。

或者

#!

/bin/bash。

在其中还可以指定shell的参数。

详细说明见后面内容。

2.1.4.课堂练习

练习一

1、目的

上面的练习不能体会到底是否是那种shell在执行,这个练习中我们专门设计csh与bash语法上不同的两个语句,来体会指定的shell确实在起作用。

2、准备知识

在csh中定义变量的语法:

setenv变量名变量值。

在bash中定义变量的语法:

变量名=变量值。

3、实施

编写shell,内容定义bash格式的变量,但指定的shell类型是csh。

然后执行并体会。

反之再操作一遍。

最后提供正确的shell类型,并保证两个shell能正确执行。

练习二

写bash脚本打印如下图形。

********************************************

**

*达内IT培训集团*

**

********************************************

练习三

给上面shell脚本添加注释。

2.2.输出输入与重定向符号

2.2.1.目的

技术

1、bash的输出输入重定向符号类型。

2、bash的输出输入重定向符号的作用。

技能

1、能根据需要正确选择并使用输出重定向符号。

2.2.2.知识点说明

2.2.2.1.输出重定向符号

1、输出重定向(如果该文件已存在,将被覆盖):

指令>file

2、输出重定向,内容追加到文件:

指令>>file

2.2.2.2.输入重定向符号

1、输入重定向:

指令

2、输入重定向(结束输入时,结束行输入END),此模式将对输入内容进行shell变量替换:

指令<

说明:

bash使用>提示符而csh使用?

作提示符

3、输入重定向(结束输入时,结束行输入END),此模式将对输入内容不做shell变量替换:

指令<<\END

说明:

bash使用>提示符而csh使用?

作提示符

2.2.2.3.错误重定向符号

1、错误重定向

指令2>文件

2、错误输出与输出重定向

指令&>文件或者

指令>&文件或者

指令>文件2>&1

2.2.2.4.关于IO重定向与CSH的说明

1、在Unix系统中,标准输入、标准输出、标准错误输出都有对应的文件描述符号,分别是0、1、2。

2、在整个课程中为了避免混淆,我们一致使用BASH做为主要的讲解。

但其他SHELL对应的知识点可以参考对应SHELL的帮助。

请使用man工具获取。

2.2.3.案例

1、切换到bash命令行。

操作:

在命令行直接输入bash

2、bash的小技巧

a.tab键的智能提示作用

b.方向键↑显示历史命令记录

3、练习输出重定向

把查看的目录清单输出到文件。

ls-l>1.txt

ls-l>>1.txt

4、练习输入重定向

使用cat与输入从定向显示文件。

cat<1.txt

显示输出键盘输入

echo<

5、练习错误重定向

查找某个文件,使用错误重定向保证不输出错误。

find/-name1.txt2>/dev/null

查找某个文件,把查找输出与错误输出到文件

find/-name1.txt&>result.txt

2.2.4.课堂练习

练习一

编写一个shell脚本,查找用户主目录下的三天前的文件,并把清单输出到某个文件中。

2.3.特殊元字符

2.3.1.目的

技术

1、了解BASH中支持的所有元字符。

2、掌握BASH中元字符的含义与使用。

技能

1、能根据需要使用元字符。

2.3.2.知识点说明

其面介绍的#、#!

、>、>>、<、<<都是特殊的元字符,在SHELL脚本中都有特定的含义与作用。

在BASH中还有很多这样的字符。

下面表格列出大部分元字符及其作用描述。

元字符

作用

例子

$

取变量值

$SHELL或者${SHELL}

!

取历史指令

!

3执行历史指令中的第三个指令

*

N个字符占位符

rm*删除所有文件

?

1个字符占位符

rma?

删除a开头两个字符文件名的文件

&

保证指令在后台执行

find/-name1.txt&

()

在子shell中执行一组指令

(ls-l;pwd)>1.txt

\

禁用元字符,就是转移符

\#

[]

含义有多种:

占位,条件测试

[a-z]a-z的所有字符[4=2]

~

用户主目录

|

管道符号

ls|wc

{}

占位符号,一组字符

ls{dir1,dir2}

上面已经讲述过的元字符没有列入。

某些元字符会在后面补充讲解。

2.3.3.案例

#!

/bin/bash

#说明元字符的使用

#下面注意其中空格有无的作用

echoHello\#是注释?

find.-name"*.txt"-execrm-f{}\;

2.3.4.课堂练习

练习一

写一个脚本完成如下任务,查找用户主目录下的所有三天前的文本文件,并把文件权限改为对所有用户只读。

2.4.变量与常量

2.4.1.目的

技术

1、定义变量。

2、使用变量。

3、常量(只读变量)。

4、系统保留变量。

5、特殊变量

技能

1、能根据需要定义合适的变量,并显示变量的值。

2、能从键盘接受变量的值。

3、能从文件读入变量的值。

4、能给shell脚本传递参数,并处理参数。

2.4.2.知识点说明

2.4.2.1.变量的定义

1、方法一

语法:

变量名=变量值

例子:

var=123

说明:

SHELL脚本中本身是没有数据类型的,所以不需要指定类型。

2、方法二

语法:

declare[+/-][rxipat][变量名称=设置值]或declare–f

例子:

declarevar=ShellProgramming

说明:

declare为shell指令,在第一种语法中可用来声明变量并设置变量的属性([rix]即为变量的属性),

在第二种语法中可用来显示shell函数。

若不加上任何参数,则会显示全部的shell变量与函数(与执行se

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1