




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学年论文(课程论文、课程设计)题目:Linux shell程序设计 作者: 所在学院: 专业年级: 指导教师: 职称: 年 月 日Linux shell程序设计摘要:Linux是一个免费的、多用户的、多任务的操作系统,其运行方式、功能和Unix系统很相似,但Linux系统的稳定性、安全性与网络功能是许多商业操作系统所无法比拟的。Linux系统最大的特色是源代码的公开,在符合GUN/GPL的原则下,任何人都可以自由取得传播甚至修改源代码。从程序员的角度来看,shell本身是一种用c语言编写的程序,从用户的角度来看,shell是用户与linux操作系统沟通的桥梁。用户即可以输入命令执行,又可以利用shell脚本编程,完成更加复杂的操作。随着网络的日益盛行,越来越多的技术高超的程序员加入到Linux的开发与完善中来,在系统管理等领域,shell编程起着不可忽略的作用。深入地了解和熟练地掌握shell编程,是每一个linux用户的必修功课之一。关键词:Linux,Shell、类型及建立,控制语句,输入输出目 录绪论4一,shell的特点5二,shell程序实例6三,shell脚本的建立和执行6四,命令历史7五,shell特殊字符7六,shell变量7七,控制结构9八,函数11绪论Linux是一个免费的、多用户的、多任务的操作系统,其运行方式、功能和Unix系统很相似,但Linux系统的稳定性、安全性与网络功能是许多商业操作系统所无法比拟的。UNIX是世界上最流行的操作系统之一,它是一种实时操作系统,可以运行于大型和小型计算机上的多任务系统。但由于它比较庞大,而且价格昂贵,所以不适合PC机用户使用。而Linux正好弥补了这些缺点,同时还继承了UNIX大多数优点。由于它基于PC机上运行的操作系统,并且内核源代码是公开的,使得Linux成为时下最浒的操作系统。Linux适用于PC机的计算机操作系统,它适合于多种平台,是目前唯一免费的非商品化操作系统。由于有结构清晰、功能强大等特点,它很快成为许多院校学生和科研机构的研究人员学习和研究的对象。在他们的热心努力下,Linux渐渐成为一个稳定可靠、功能完善的操作系统。Linux是由UNIX发展来的,它不仅继承了UNIX操作系统的特征,而且许多方面还超过了UNIX系统。另外它还有许多UNIX所不具有的优点和特征。它的源代码是开放的,可运行于许多硬件平台 ,支持多达32种文件,支持大量的外部设备等。本文主要介绍了linux中shell的基本概念和构成,从程序员的角度来看,shell本身是一种用c语言编写的程序,从用户的角度来看,shell是用户与linux操作系统沟通的桥梁。用户即可以输入命令执行,又可以利用shell脚本编程,完成更加复杂的操作。随着网络的日益盛行,越来越多的技术高超的程序员加入到Linux的开发与完善中来,在系统管理等领域,shell编程起着不可忽略的作用。深入地了解和熟练地掌握shell编程,是每一个linux用户的必修功课之一。Shell程序有很多类似C语言和其他程序设计语言的特征,但是又没有程序语言那样复杂。它结合了延展性与效率,持续保有独具的特色,并不断被改良,是那些类似与GUI等的屏幕图形界面最有力的支柱。Shell程序是指放在一个文件中的一系列Linux命令和实用程序。在执行的时候,通过Linux操作系统一个接一个地解释和执行每条命令。此后,只要直接执行该程序便能完成工作。如果你的程序写的很有用,其他人可以利用该程序当做一个黑盒来使用。本论文将对shell做一个比较全面的解析,使大家能够对之更加熟悉。一、 初识shell在写这篇论文之前,我们需要弄清楚5个基本的概念: 1) 什么是Shell? 官方的解释称:Shell是一种具备特殊功能的程序, 它是介于使用者和 UNIX/Linux 操作系统之核心程序(kernel)间的一个接口,是核心程序(kernel)之外的指令解析器,是一个程序,同时是一种命令语言和程序设计语言。也就是说, 为了对用户屏蔽内核的复杂性,也为了保护内核以免用户误操作造成损害,在内核的周围建了一个外壳(shell)。用户向shell提出请求,shell解释并将请求传给内核。 2) shell的本质 本质上,shell 脚本是命令行命令简单的组合到一个文件里面。Shell基本上是一个命令解释器,类似于DOS下的。它接收用户命令,然后调用相应的应用程序。 输入echo $SHELL可以知道当前运行在那个Shell标准中。 3) shell标准有哪些? 使用较广的shell有标准的Bourne shell (sh)、Korn Shell(ksh)、C shell (csh)、Bourne Again Shell(bash)等。 4) shell程序大体内容shell自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。任何在提示符中能键入的命令都能放到一个可执行的shell程序中。 5) 运行shell的脚本格式 运行一个shell脚本必须为(./+名字.sh)。 5个基本概念明白之后,我们首先来编写第一个Shell程序,从中学习Shell程序的编写、修改权限、执行过程。利用vi编辑器编辑脚本,将脚本命名为date.sh。编辑一个内容如下的源程序,保存文件名为date,可将其存放在目录/bin下。6) 执行Shell程序有下面三种方法: 方法一: rootlocalhost bin#./ date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 方法二: 另一种执行date的方法就是把它作为一个参数传递给Shell命令: rootlocalhost bin# Bash date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 方法三:为了在任何目录都可以编译和执行Shell所编写的程序,即把/bin的这个目录添加到整个环境变量中。具体操作如下: rootlocalhost root#export PATH=/bin:$PATH rootlocalhost bin# date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 接下来我们通过一些例子将shell编程进一步阐释。二,shell的特点 一种高级程序设计语言,它有变量,关键字,有各种控制语句,如if、case、while、for等语句,支持函数模块,有自己的语法结构。Shell有如下几种特点:组合新命令 提供了文件名扩展字符 直接使用shell 的内置命令 灵活地使用数据流 结构化的程序模块 在后台执行命令 可配置的环境 高级的命令语言 Shell的种类: (1)Bourne shell(简称sh)(2)C shell(简称csh)(3)Korn shell(简称ksh)(4)Bourne Again shell(即bash) 三,shell程序实例下面是由三条简单命令组成的shell程序(文件名为ex1)。$ cat ex1datepwdcd .下面是简单地用shell输出当前年月日的程序运行结果图:四,shell脚本的建立和执行执行shell脚本的方式基本上有三种:(1)输入定向到shell脚本$ bash 脚本名 (2)以脚本名作为参数其一般形式是: $ bash 脚本名 参数bash shell的内置命令:type 通过type我们可以知道一个命令式内置命令还是外部命令。type -t 命令-t :加入参数t时,结果为以下意思:file:表示为外部命令alias:表示该命令式别名所设置的名称builtin:表示该命令为bash内置命令,按如上面所说的步骤写命令其运行结构为:(3)将shell脚本的权限设置为可执行,然后在提示符下直接执行它。$ chmod a+x ex2$ PATH=$PATH:.$ ex2查看环境变量使用env 或者export命令,可以查看系统中所有的变量例如:下面是它实际实现图:四,命令历史显示历史命令语法格式是:history option arg 如果不带任何参数,则history命令会显示历史命令的清单 如果history 后给出一个正整数(如50),就只显示历史表中的最后50行命令。例如:如果只是查看最近的10条历史命令,可以在命令提升符下输入:#history10在linux系统的默认配置下,重复的历史命令都会存入.bash_history文件。如果不希望在输入history命令查看历史命令时,看到连续重复的历史命令,我们可以在.bashrc中加入下面两行:exportHISTCONTROL=ignoreboth shopt-shistappend其中第一行的命令的作用为“移除Linux shell命令历史记录中连续重复的文件”,第二行的作用为“shell 退出时,将shell 的历史记录附加到您的记录文件”。如果history后给出一个文件名,就把它作为历史文件名。五,shell特殊字符1一般通配符*(星号),它匹配任意字符的0次或多次出现 ?(问号),它匹配任意一个字符 (一对方括号),其中有一个字符组。其作用是匹配该字符组所限定的任何一个字符 !(惊叹号),如果它紧跟在一对方括号的左方括号()之后,则表示不在一对方括号中所列出的字符 由双引号括起来的字符(除$、倒引号()和反斜线()外)均作为普通字符对待。由单引号括起来的字符都作为普通字符出现。六,shell变量用户定义的变量 变量名是以字母或下线符打头的字母、数字和下线符序列,并且大小写字母意义不同。 定义变量并赋值的一般形式是: 变量名=字符串 通常我们引用变量值时在变量名前面加上一个符号“$”。如果在赋给变量的值中要含有空格、制表符或换行符,那么,就应该用双引号把这个字符串括起来。 例如:$ names=arzugul Lisi adila$ echo $names如果变量值须出现在长字符串的开头或者中间,为了使变量名与其后的字符区分开,避免shell把它与其它字符混在一起视为一个新变量,则应该用花括号将该变量名括起来。例如: $ dir=/usr/meng $ cat $dirqc/m1.c命令替换有两种形式的命令替换,一种是使用倒引号引用命令,其一般形式是: 命令表另一种形式是: $(命令表) 如:$ dir=$(pwd) $ echo $(pwd ; cd /home/mengqc ; ls -d)数组shell中bash只提供一维数组,并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。一般对数组元素赋值的形式是:数组名下标值可以用declare命令显式声明一个数组,一般形式是:declare -a 数组名读取数组元素值的一般格式是:$数组名下标定义一个数组并为其赋初值的一般形式是:数组名=(值1 值2 值n)。其中,各个值之间以空格分开。若没有给出数组元素的下标,则数组名表示下标为0的数组元素。使用*或当作下标,则会以数组中所有元素取代*或。输入/输出命令在shell中可以利用read命令从键盘上读取数据,然后赋给指定的变量。read命令的一般格式是:read 变量1 变量2 ,变量个数与给定数据个数相同,则依次对应赋值,变量个数少于数据个数,则从左至右对应赋值,但最后一个变量被赋予剩余的所有数据。变量个数多于给定数据个数,则依次对应赋值,而没有数据与之对应的变量取空串。用echo命令显示其后的变量值或者直接显示它后面的字符串。如果echo命令带有选项“-e”,那么在其后的参数中可以有以下转义字符: a b c e f n r t v m xm下面是几种常见的声明类型及它实现结果图:declare -iaxr vara:数组类型i 整形x 全局变量r 只读类型七,控制结构if语句if语句用于条件控制结构中,其一般格式为:if 测试条件 then 命令1 else 命令2 fi其中,if、then、else和fi是关键字。例如: if test -f $1 then echo $1 is an ordinary file . else echo $1 is not an ordinary file . fi在shell中if语句中else部分可以缺省。case语句case语句允许进行多重条件选择。其一般语法形式是: case 字符串 in 模式字符串1) 命令 命令; 模式字符串2) 命令 命令; 模式字符串n) 命令 命令; esac但在使用case语句时我们应注意如下几点: 每个模式字符串后面可有一条或多条命令,其最后一条命令必须以两个分号(即;)结束。模式字符串中可以使用通配符 如果一个模式字符串中包含多个模式,那么各模式之间应以竖线(|)隔开,表示各模式是“或”的关系,即只要给定字符串与其中一个模式相配,就会执行其后的命令表。 各模式字符串应是唯一的,不应重复出现。并且要合理安排它们的出现顺序。 case语句以关键字case开头,以关键字esac(是case倒过来写!)结束。 case的退出(返回)值是整个结构中最后执行的那个命令的退出值。若没有执行任何命令,则退出值为零。while语句shell中有三种用于循环的语句,它们是:while语句、for语句和until语句。 while语句的一般形式是:while 测试条件 do命令表 doneuntil语句until语句的一般形式是: until 测试条件 do 命令表 Done它与while语句很相似,只是测试条件不同:当测试条件为假时,才进入循环体,直至测试条件为真时终止循环。for语句值表方式:其一般格式为 for 变量 in 值表 ;do 命令表;done算术表达式方式:其一般格式为 for ( e1;e2;e3) ; do 命令表;done或者 for (e1;e2;e3) do 命令表 donebreak命令和continue命令break命令使程序从循环体中退出来。其语法格式是: break n continue命令跳过循环体中在它之后的语句,回到本层循环的开头,进行下一次循环。其语法格式是:continue n exit命令exit命令的功能是立即退出正在执行的shell脚本,并设定退出值。其语法格式是:exit n 八,函数在shell脚本中可以定义并使用函数。其定义格式为:function函数名( ) 命令表 函数应先定义,后使用。调用函数时,直接利用函数名,如showfile,不必带圆括号。shell脚本与函数间的参数传递可利用位置参数和变量直接传递,通常,函数中的最后一个命令执行之后,就退出被调函数。也可利用return命令立即退出函数,其语法格式是:return n 个人总结:通过这学期的linux学习,我对linux操作系统有了基本的认识。最开始我对这门课一点也不了解,觉得它应用领域广泛而且复杂,自己再怎么努力也学不好这门课,许多代码也不好记的那样感觉。但通过我们任课老师的认
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业帮厨活动方案
- 企业引流活动方案
- 企业拓展活动策划方案
- 企业服务日活动方案
- 企业爬上活动方案
- 企业种地活动策划方案
- 企业网络直播活动方案
- 企业订货活动方案
- 企业防疫推广活动方案
- 企鹅体能活动方案
- YY/T 1164-2021人绒毛膜促性腺激素(HCG)检测试剂盒(胶体金免疫层析法)
- 公安派出所日常消防监督检查记录模板
- 可编程控制器应用实训形考任务五
- 公共文化服务体系建设专项资金一般项目、绩效奖励绩效目标自评表
- 燃气蒸汽锅炉拆除施工组织方案
- 大直径泥水盾构刀盘应用与管理
- 重庆市安全评价收费标准
- 尾矿坝施工方案
- DG-TJ 08-2322-2020 测绘成果质量检验标准 高质量清晰版
- 心脏骤停课件
- 送鲍浩然之浙东(课堂PPT)
评论
0/150
提交评论