Linux操作系统 教学课件 作者 孙斌 6 11 第9章.ppt
文本预览下载声明
第9章 Shell编程 9.1 Shell简介 9.1.1 Shell批处理文件 Shell批处理文件(Shell Script)是一个文本文件,指挥并控制Shell执行一系列特定的操作。一个批处理文件可以包含任何命令,甚至还包括既往编写的批处理文件。批处理文件能使用重定向或管道,并能够编写自己的过滤器(Filter)。对比DOS下的?.bat文件便可领会Shell的批处理方式。然而,Linux的Shell批处理文件具有更丰富的内容,Shell批处理能提示输入,随后根据键入的回答信息来执行不同的动作。这种批处理文件还能根据用户提供的参数来处理命令,并根据命令的结果选择相应的步骤,其选择是根据条件执行,即所谓的流控制(Flow Control)。 9.1.2 Shell语言的特点 Shell允许通过编程来完成复杂的功能处理,但其作为语言与高级语言相比较具有自身的特点: (1) ?Shell是解释型语言,而多数高级语言是编译型语言; (2) ?Shell语言与高级语言处理的对象不同; (3) ?Shell与系统的关系更加密切; (4) ?Shell易编写、调试,灵活性较强,但速度低; (5) ?Shell作为命令级语言,命令组合功能很强。 9.1.3 Shell的种类 Bourne?Shell之所以得到了更多的应用,是因为它具有以下特点: (1) 自动补全功能。对于要输入的命令很长的情况,仅需输入开始的部分命令字符,再按一个Tab键,BASH就会在可能的命令类中找寻匹配的命令,找到后就会自动补齐。用户输入的字符越多,BASH搜寻匹配的命令就越容易找到。 (2) 命令行编辑程序功能。BASH的命令行编辑是在提示符下,可对未执行的命令字符任意地修改,即使拼错了也不需要重新输入整个命令,只需在执行命令前使用左右方向键移动光标,用Backspace键或Del键删除字符来修改打错的命令,利用编辑功能纠正错误。 (3) 命令历史(Command History)利用功能。所谓的命令历史就是把曾经输入过的命令记录起来,方便查询与再使用。BASH利用上、下键就可以显示和选择以前输入过的命令。 Korn?Shell是Bourne?Shell的一个超级版本。它增加了别名、历史记录以及命令行编辑等功能。其超级用户的提示符为?#,普通用户的提示符为?$,工作路径为?/usr/bin/ksh。 C?Shell的语法则类似于C语言,它的超级用户的提示符为?#,普通用户的提示符为?%,工作路径为?/usr/bin/csh。 用户可以经过比较,按自己的喜好选择适合于自己的Shell种类。 9.2 Shell的启动与切换 1. 用户登录时启动Shell Linux系统在用户登录时即启动Shell,系统在引导的过程中,需要调用Login进程,负责验证用户身份,验证后把控制权交给Shell程序。Shell根据环境文件建立系统范围内的工作环境和该用户自己的工作环境,最后显示命令提示符按具体实际情况可分为?#、$?或?%。 在?/etc/passwd文件中指定要启动的Shell,其命令格式如下: root: x: 0: 0: root: /root: /bin/bash jobn: x: 701: 10: Certer starf: /home/john: /bin/csh 在约定的提示符出现后则完成启动,此时便进入Shell环境。 2. 命令行状态下启动交互Shell 在同一Linux系统中可能有多种版本的Shell存在,可通过相应的命令来启动或转换,实现3种Shell之间的转换,比较方便。 例如,若在?$?提示符下输入: $ bsh 则会出现?$?提示符,表示此时是Bourne?Shell(BASH)环境,其工作路径在?/usr/bin/sh目录下。 若在?$?提示符下输入: $ ksh 则会出现?$?提示符,表示此时是Korn?Shell(KSH)环境,其工作路径在?/usr/bin/ksh目录下。 若在?$?提示符下输入: $ csh 则会出现?%?提示符,表示此时是C?Shell(CSH)环境,其工作路径在?/usr/bin/csh目录下。 3. 执行用户命令时启动Shell 执行用户命令时,由系统生成新的子Shell来执行该命令。 9.3 Shell的元字符(通配符) 1. 管道与命令表 管道指一个命令的标准输出作为另一个命令的标准输入,不经过任何中间文件的通道。管道能在应用程序中使用。利用管道,可将信息从一个程序送到另一个程序。管道是单向的通信路径,由输出端将信息送入管道,由接收端接收。管道操作
显示全部