- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
                        查看更多
                        
                    
                   shell编程与文本编辑
8.1 shell编程
8.1.1 shell基础
shell是用C语言写的一个程序,它虽然与系统在一起并且作为系统的一部分提供给用户,但它不是操作系统的核心部分,它属于普通用户程序, 是命令的解释程序。
 
8.1.1.1 shell命令及其表示方式
      在shell程序中,一个命令行是由一系列的参量(argument)组成,参量与参数之间用空格或制表符隔开。第一个参量(位置计数为0)即是命令的名字。
      
      命令行的一般格式为:参数0   参数1   参数2   ……
      
       例如:cat  file1  file2  file3
在这个命令行中共有四个参量,第一个参数cat是命令的名字,其余三个是文件名,其意思是打开文件file1、file2和file3。
      如果命令行的第一个参量(即命令名的位置)是一个文件,而这个文件是可执行的,那么这个可执行的文件:
A.可能是一个已经被编译过的程序,在这种情况下,直接运行这个程序即可  
B.如果文件被标记为可执行的,但它不是被编译这的程序,那么就认为它是一 
个shell过程。也就是说,它是一个包括了一些shell命令行的普通文本文
件。遇到这种情况,shell读这个文件,并且执行包含在文件中的一些shell
命令。
 
8.1.1.2 shell程序所用的命令路径
      通常,shell从文件系统的三个不同的地方查找所用的命令,查找的顺序为:
当前目录、目录/bin、目录/usr/bin。这样的机制,给多个用户执行的公共命令提供发一种方便的方法。
 
8.1.1.3 文件名匹配符
     shell程序使用了三种匹配符:
(1)*  星号:匹配任何字符串,包括空字符,但不含符号“.”
      例如:/u/data/*    表示目录/u/data下所有的文件
              /u/data/*ab  表示目录/u/data下所有以ab字母结尾的文件
              /u/data/*.c  表示目录/u/data下所有以.c结尾的文件
(2)? 问号:匹配一个任何字符或数值, 但不含符号“.”
       例如:/u/data/?  表示目录/u/data下只含一个字母的文件
               /u/data/f?b  表示目录/u/data下以f字母开头、以b字母结尾而且只含
                                 三个字符的文件
(3)[…]   :在方括号中,可以是任何字符或数值序列。
    A.它可以匹配方括号中所包含的任何一个字符。
          例如:[abdf] 等于或a、或b、或d、或f
 
    B。在方括号里面,由小横杠隔开的一对字符或数值,可以与这对字符或数值给
         出的范围中任意字符或数值匹配。
         例如:[a-d] 等于abcd
              [1-6] 等于123456
 
      C.在方括号里面,字符“!”表示不包含。
         例如:[!A-Z] 等于不含从A至Z的大写字母
 
注意:目录名字中不应包含下列字符中的任何一个:*  ?与 [ ],如果在目录中使用了这些字符,那么在按照指定字符串查找与之相匹配的名字时,可能出现无限循环。
 
8.1.1.4使用引号
      对shell来说,引号的作用是删除特殊字符的特殊含义。Shell程序中的特殊字符有:         *     ?     [ ]    #    $    
要使这些字符失去在shell中的特殊意义,需要某些形式的引用。
 
引用方式有三种:
(1)单引号“′”把特殊字符括起来。
    在单引号中引用的全部字符,都将失去它的特殊意义。
    例1:在键盘上输入下列信息:
     aaa=testing
     echo  `Parameter  \$aaa  is  $aaa`
 将显示结果为:Parameter  $aaa  is  $aaa    
    
    例2:在键盘上输入下列信息
     aaa=testing
     echo  `Parameter  \$aaa  is`  $aaa
 将显示结果为:Parameter  $aaa  is  testing
      结果表明:单引号中引用的字符$,已经失去了它的特殊意义
 
(2)使用双引号““”把特殊字符括起来。
在双引号中引用的全部字符,除特殊意义的字符$、$(command)、\、`、”外,其它字符都将失去它的特殊意义。
   例3:在键盘上输入下列信息
                 原创力文档
原创力文档 
                        

文档评论(0)