10 shell编程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
10 shell编程

脚本语言与编译型语言 许多中型、大型的程序都是用编译型语言写成,例如Pascal、C、C++或Java。这类程序只要从源代码转换成目标代码,便能直接通过计算机来执行。编译型语言的好处是高效,缺点则是它们多半运作于底层,所处理的是字节、整数、浮点数或是其他机器层级的对象。 脚本编程语言通常是解释型的。这类程序的执行,是由解释器读入程序代码,并将其转换成内部的形式,再执行。需要注意的是解释器本身是一般的编译型程序。 为什么使用Shell脚本 使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象。缺点是:它们的效率通常不如编译型语言。不过权衡之下,通常使用脚本编程还是值得的:花一个小时写成的脚本,同样的功能用C或C++来编写实现,可能需要两天,而且一般来说,脚本执行的速度已经够快了。 Shell脚本基于:简单性、可移植性和开发简单 第一个例子 前面新建的date脚本文件只能在当前目录下执行,如果想让此执行文件像ls一样在任意目录下可以执行,那么需要将date所在的目录添加大路径变量PATH中去。我们首先将date重命名为mydate以避免和系统命令的date冲突。 一些特殊的运行脚本的方法 在不执行$chmod +x date将date设置为可执行的文件的情况下,也是执行脚本。只需在date前面加一个点“.”,并且用空格与后面的shell脚本的文件名隔开。如下图所示,对于一个新的脚本文件testdate,可以通过这种方法执行。 一个比较规范的例子 当一个文件中开头的两个字符是#!时,内核会扫描该行其余的部分,看是否存在可用来执行程序的解释器的完整路径(中间如果出现任何空白符号都会略过)。此外,内核还会扫描是否有一个选项要传递给解释器。内核会以被指定的选项来引用解释器,再搭配命令行的其余部分。 命令历史 语法格式是:history [option] [arg…] 如果不带任何参数,则history命令会显示历史命令的清单 如果history 后给出一个正整数(如5),就只显示历史表中的最后5行命令 如果history后给出一个文件名,就把它作为历史文件名 常用的选项有: -a 在历史文件中添加“新”历史命令行。 -n 从历史文件中读取尚未读入的历史命令行,添加到当前历史清单中。 -r 读取历史文件的内容,并把它作为当前的历史命令。 -w 把当前的历史写到历史文件中,覆盖原有内容。 -c 删除历史清单中所有的项。 执行历史命令是命令替换之一,它以字符“!”开头、后随1个或多个字符来定义用户所需的某种类型的历史命令 配置历史命令环境 在默认方式下,bash使用用户主目录下面的文件“.bash_history”来保存命令历史 改变存放历史命令的文件 $ HISTFILE=/home/mengqc/.myhistory 重新设定能够保留的命令个数 $ HISTSIZE=600 shell特殊字符 1.一般通配符 *(星号),它匹配任意字符的0次或多次出现 ?(问号),它匹配任意一个字符 [ ](一对方括号),其中有一个字符组。其作用是匹配该字符组所限定的任何一个字符 !(惊叹号),如果它紧跟在一对方括号的左方括号([)之后,则表示不在一对方括号中所列出的字符 2.模式表达式 ——是那些包含一个或多个通配符的字 *(模式表)——匹配给定模式表中“模式”的0次或多次出现,各模式之间以“|”分开(下同) +(模式表)——匹配给定模式表中“模式”的1次或多次出现 ?(模式表)——匹配模式表中任何一种“模式”的0次或1次出现 @(模式表)——仅匹配模式表中给定“模式”的一次出现 !(模式表)——除给定模式表中的一个“模式”之外,可以匹配其他任何东西 引号 1.双引号 由双引号括起来的字符(除$、倒引号(`)和反斜线(\)外)均作为普通字符对待。 2.单引号 由单引号括起来的字符都作为普通字符出现 3.倒引号 倒引号括起来的字符串被shell解释为命令行,在执行时,shell会先执行该命令行,并以它的标准输出结果取代整个倒引号部分。 倒引号还可以嵌套使用。但应注意,嵌套使用时内层的倒引号必须用反斜线(\)将其转义。 Shell参数 如同ls命令可以接受目录等作为它的参数一样,在shell编程时同样可以使用参数。 Shell有位置参数和内部参数。 位置参数 由系统提供的参数称为位置参数。位置参数的值可以用$N得到,N是一个数字,如果为1,即$1。类似C语言中的数组,Linux会把输入的命令字符串分段并给每段进行标号,标号从0开始。第0号为程序名字,从1开始就表示传递给程序的参数。例如:$0表示程序的名字,$1表示传递给程序的第一个

文档评论(0)

ajgoaw + 关注
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档