UNIX初级讲座Ch05Shell.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UNIX初级讲座Ch05Shell.ppt

BUPT MultiMedia Hop Lee 第五章 Shell BUPT MultiMedia Hop Lee UNIX操作系统 北京邮电大学 电信工程学院多媒体中心 第五章 Shell UNIX Shell概述 BAShell的环境 BAShell脚本编程 其他类型的Shell §5.1 UNIX Shell概述 一、?bash 介绍 bash(Bourne Again SHell)是自由软件基金会发布的 Bourne Shell 的兼容程序。它包含了许多其他优秀 shell 的良好特性,功能十分全面。很多 Linux 版本都提供 bash。 重要的命令行机制: 变量 命令补全 特殊字符:“ ‘ 别名 重定向 管道 历史表 命令行编辑 二、进入shell 用户登录后系统会自动为用户运行一个Shell,称为登录Shell。以后用户提交的所有任务都是这个Shell的子进程。 用户还可以通过运行命令/bin/sh来产生一个新的shell。 BAShell的提示符为$,超级用户的Shell提示符为#。 Shell的主要任务是解释用户的输入,对其中的元字符以及Shell变量进行代换,然后产生子进程并用指定命令文件的代码和数据去重新生成子进程的上下文;用户的命令执行完毕后Shell返回一个提示符,将控制权交给用户。 当Shell执行用户命令时,它有自己的一些执行方式和环境,这是可以由用户定制的。 借助Shell,用户可以: 将多个命令组合成一个新命令 在后台执行命令 循环地执行命令 根据不同的条件执行不同的命令 改变命令的输入文件或输出文件 三、环境变量 Shell的环境变量实际上就是具有某个特定值的一个名称。这个名称不能包括$和空格。 环境变量分为系统预定义的变量和用户自定义的变量两类 环境变量的设定方法为: $variable=value 常见的系统环境变量及其含义如下: HOME 用户主目录 HZ 时钟中断频率 LOGNAME 用户登录名 MAIL 用户的邮件目录 PATH 命令搜索路径序列 SHELL 用户Shell类型 TERM 用户终端类型 SHLVL Shell级别,登录Shell为1 PWD 当前工作目录 USER 用户名 GROUP 用户所属组名 HOSTNAME 主机名 PS1 一级提示符(缺省为$) PS2 二级提示符(缺省为) IFS 内部域分隔符 TZ 时区 用户也可以修改这些系统环境变量 §5.2 Shell编程 一、概述 最简单的Shell程序就是命令提示符下的UNIX命令的组合 Shell程序实际上是文本文件,被称为Shell Script。 Shell程序设计的内容主要有:变量、内部命令及其组合、流控、函数。 Shell程序编制完成后,保存在Script文件test中,其执行方式有以下几种: $sh ./test $sh ./test $chmod +x test;./test BASH 程序的调试 用 bash -x bash-script 命令,可以查看一个出错的 BASH 脚本到底错在什么地方,可以帮助程序员找出脚本中的错误。 二、Shell变量 Shell的变量分为三种类型:环境变量、位置参数和预定义变量。 位置参数:当用户执行一个Shell命令时,Shell将创建10个位置参数,分别是:$0、$1、…、和$9。其中$0表示命令的文件名本身,而$1、$2、…、$9分别表示命令的第1个、第2个、…、第9个命令行参数。 如果一个命令的命令行参数多于9个,那么后面的参数就不能直接得到了,这时就需要使用Shell的内部命令shift了。shift命令的作用是将位置参数左移,即:$1=$2; $2=$3;…,而$9此时就等于刚才没有出现的第10个命令行参数。 另外内部命令set用于给位置参数赋值。 Shell的预定义变量及其意义如下: $* 命令行中的所有参数,从$1开始,用空格 分开,不限于9个 $@ 与$*类似,但是它的值是多个字符串,而 不是一个 $# 位置参数的总数,不包括$0 $- Shell的命令行选项组成的串 $? 命令返回的值(十进制),不能被赋值命 令修改 $$ 当前命令的pid号,不能被赋值命令修改 $! 在后台运行的最近一个进程的pid号 除非特别声明,Shell的变量是局部的,只在当前Shell有效,而在其子Shell中无法使用此变量。除非使用export命令将变量输出。并且子Shell不能更改由其父Shell设置的变量值,除非使用source命令将变量输出。 local将显式地指定变量的作用域为局部变量。 在Shell script中调用cd来改变工作目录时,不会影响其父Shell的当前目录 范例: [Apple]$ cat teststar

文档评论(0)

lingyun51 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档