第2章 Shell编程.pdf
《第2章 Shell编程.pdf》由会员分享,可在线阅读,更多相关《第2章 Shell编程.pdf(124页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、 第第 2 2 章 章ShellShell 编程编程2.1 Shell2.1 Shell 概述概述2.2 2.2 创建和执行创建和执行 ShellShell 程序程序2.3 Shell2.3 Shell 程序设计的语法程序设计的语法2.4 Shell2.4 Shell 编程实例编程实例 2.12.1、ShellShell 概述概述1 1、什么是、什么是 ShellShell2 2、各种不同类型的、各种不同类型的 ShellShell3 3、ShellShell 的启动的启动4 4、为什么要使用、为什么要使用 ShellShell 1 1、什么是、什么是 ShellShellShellShell
2、:用户和操作系统之间的接口:用户和操作系统之间的接口文件子系统用户 硬 件 控 制 硬件内核Shell用户用户用户高级语言和实用程序系统调用进程管理子系统进程间通信存储管理调度程序设备驱动程序字符设备块设备高速缓存核外程序Shell:用户和操作系统之间的接口 Shell:Shell:作为核外程序而存在作为核外程序而存在 csh 其它程序 bash X 窗口系统内核KernelShell ShellShell 的双重角色的双重角色命令解释程序命令解释程序打印提示符;得到命令行;解析命令;执行打印提示符;得到命令行;解析命令;执行命令;返回命令执行结果命令;返回命令执行结果程序设计语言程序设计语言
3、提供通配符、输入提供通配符、输入/输出重定向、管道等机制输出重定向、管道等机制变量、关键字、各种控制语句变量、关键字、各种控制语句支持函数模块支持函数模块ShellShell 程序以脚本的形式存在(程序以脚本的形式存在(shell scriptshell script)举例举例重定向重定向“使用“使用echo”echo”命令创建一个文件命令创建一个文件?管道管道获取一个目录下文件的数量获取一个目录下文件的数量?ps|sort|uniq|grep v sh|moreps|sort|uniq|grep v sh|more ShellShell 作为程序设计语言有如下特点作为程序设计语言有如下特点s
4、hellshell 是解释性的,多数高级语言是编译性是解释性的,多数高级语言是编译性的的shellshell 语言与高级语言处理的对象不同语言与高级语言处理的对象不同shellshell 与系统有密切的关系与系统有密切的关系shellshell 易编写、调试、灵活性较强,但速度易编写、调试、灵活性较强,但速度低低shellshell 作为命令级语言,命令组合功能很强作为命令级语言,命令组合功能很强 2 2、各种不同的、各种不同的 ShellShellshellshell 名称名称 描述描述位置位置ashash一个小的一个小的 shellshell/bin/ash/bin/ashbshbshas
5、hash 的一个符号链接的一个符号链接/bin/bsh/bin/bshbashbash“Bourne Again Bourne Again Shell”Shell”。LinuxLinux 中的主角,中的主角,来自来自 GNUGNU 项目项目/bin/bash/bin/bashshshbashbash 的一个符号链接的一个符号链接/bin/sh/bin/shcshcshC shell,tcshC shell,tcsh 的一个符号链的一个符号链接接/bin/csh/bin/cshtcshtcsh和和 cshcsh 兼容的兼容的 shellshell/bin/tcsh/bin/tcshkshkshK
6、orn ShellKorn Shell/bin/ksh/bin/ksh bashbash 特点特点自动补全功能自动补全功能按按 TabTab 键,自动补齐文件名键,自动补齐文件名bashbash 的命令行编辑是在提示符下,可对的命令行编辑是在提示符下,可对未执行的命令字符任意地修改未执行的命令字符任意地修改 命令历史命令历史(command history)(command history)historyhistory上、下箭头键上、下箭头键 在在 ShellShell 下输入的命令全部是下输入的命令全部是 ShellShell 提供提供的内部命令吗?的内部命令吗?否否ShellShell 内
7、部命令、内部命令、linuxlinux 命令、安装的应用程命令、安装的应用程序、用户自己编写的应用程序序、用户自己编写的应用程序 3 3、ShellShell 的启动的启动在字符界面操作模式下,当在字符界面操作模式下,当 loginlogin 时,就时,就会启动一个会启动一个 shell shell 在图形界面操作模式下,打开一个终端在图形界面操作模式下,打开一个终端,就会启动一个,就会启动一个 shellshell 在在/etc/passwd/etc/passwd 文件中指定用户要启动的文件中指定用户要启动的shellshell 4 4、为什么要使用、为什么要使用 ShellShellLin
8、uxLinux 系统管理系统管理系统管理员必须掌握系统管理员必须掌握了解系统,如了解系统,如 LinuxLinux 启动过程中要运行启动过程中要运行/etc/init.d/etc/init.d 目目录下的脚本来存储系统配置和建立服务录下的脚本来存储系统配置和建立服务使重复的任务自动化使重复的任务自动化如:批量建立用户、批改作业如:批量建立用户、批改作业执行日常经常执行的维护操作执行日常经常执行的维护操作如:身份验证如:身份验证写报告写报告如:大型工程进行编译时记录出错信息如:大型工程进行编译时记录出错信息建立和操作数据文件建立和操作数据文件 2.2 2.2 创建和执行创建和执行 ShellSh
9、ell 程序程序编写脚本文件编写脚本文件执行脚本文件执行脚本文件调试脚本调试脚本运行环境运行环境 1 1、编写脚本文件、编写脚本文件编辑器编辑器gvimgvim、emacsemacs 等等脚本文件脚本文件注释注释正文正文退出码退出码(exit code)(exit code)Example:Example:ex1ex1脚本命名方式脚本命名方式无扩展名或后缀无扩展名或后缀#!/bin/bash#Here is commentsfor file in$*do if grep POSIX$file then more$file fidoneexit 0 2 2、执行脚本文件、执行脚本文件方法方法 1
10、:1:$bashscript_file$bashscript_file例如:例如:$bashex1$bashex1方法方法 2:2:$bash script_file parameter$bash script_file parameter之后,也可以直接运行下面命令执行之后,也可以直接运行下面命令执行 shellshell 脚脚本本$.script_file parameter$.script_file parameter例如:例如:$bash ex1/usr/file1$bash ex1/usr/file1$.ex1/usr/zhang/file2$.ex1/usr/zhang/file2
11、 方法方法 3:3:$chmod+x script_file$chmod+x script_file 之后,执行下面命令执行 之后,执行下面命令执行 shellshell 脚本脚本$./script_file$./script_file或者执行下面命令执行或者执行下面命令执行 shellshell 脚本脚本$PATH=$PATH:.$PATH=$PATH:.$script_file$script_file例如:例如:$chmod+x ex1$chmod+x ex1$./ex1$./ex1或者:或者:$chmod+x ex1$chmod+x ex1$PATH=$PATH:.$PATH=$PATH
12、:.$ex1$ex1可以把脚本程序的完整的相对路径告诉 shell”把当前工作目录.”添加到命令搜索路径中 3 3、调试脚本、调试脚本“使用“使用-n”-n”选项进行选项进行 shellshell 脚本的语法检脚本的语法检 查 查使用使用-x-x 选项将选项将 shellshell 设置成跟踪模式设置成跟踪模式 bash x ex1 parameter1 parameter2bash x ex1 parameter1 parameter2添加打印信息:添加打印信息:echoecho 4 4、运行环境、运行环境运行环境运行环境一组环境变量的定义一组环境变量的定义环境变量环境变量它是一个具有特定名
13、字的对象,它包含了它是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息一个或者多个应用程序所将使用到的信息系统环境变量与用户环境变量系统环境变量与用户环境变量 常用环境变量:常用环境变量:PATHPATH:ShellShell 命令搜索路径命令搜索路径LOGNAMELOGNAME:当前用户的登录名:当前用户的登录名 HOMEHOME:用户主目录:用户主目录HISTSIZEHISTSIZE:保存历史命令记录的条数:保存历史命令记录的条数 SHELLSHELL:当前使用的:当前使用的 ShellShell MAILMAIL:信箱路径:信箱路径PWDPWD、TERMTERM、PS
14、1.PS1.环境文件环境文件/etc/profile,bash.bashrc,environment/etc/profile,bash.bashrc,environment 系统环境系统环境/.bash_profile,.bashrc,.bash_logout/.bash_profile,.bashrc,.bash_logout 用户环境用户环境,用户建立后便自动生成,用户建立后便自动生成/etc/profile/etc/profile为系统的每个用户设置环境信息:为系统的每个用户设置环境信息:PATHPATH、USERUSER、LOGNAMELOGNAME、LANGUAGELANGUAGE、
15、PS1PS1/etc/bashrc/etc/bashrc 或或 environmentenvironment当用户第一次登陆时被执行当用户第一次登陆时被执行,并从并从/etc/profile.d/etc/profile.d 目录的目录的配置文件中搜集配置文件中搜集 shellshell 的设置的设置 为每一个运行为每一个运行 bash shellbash shell 的用户执行此文件的用户执行此文件 /.bash_profile:/.bash_profile:用户登录时被读取,其中包含的命令被用户登录时被读取,其中包含的命令被bashbash 执行执行或往或往 PATHPATH 添加用户相关路
16、径:添加用户相关路径:PATH=$PATH:PATH=$PATH:$HOME/bin$HOME/bin/.bashrc/.bashrcbash shellbash shell 中启动一个新的中启动一个新的 bash shellbash shell 时读取时读取并执行 即执行并执行 即执行 ShellShell 命令时执行命令时执行/.bash_logout:/.bash_logout:清屏清屏退出时读取执行退出时读取执行 使用环境变量使用环境变量显示环境变量显示环境变量echoecho 可以查看任何一个环境变量的值可以查看任何一个环境变量的值envenv 命令显示所有的环境变量命令显示所有的环
17、境变量 setset 显示所有本地定义的变量 显示所有本地定义的变量 设置环境变量设置环境变量ShellShell 命令行创建一个环境变量:变量名命令行创建一个环境变量:变量名=值值exportexport 创建一个全局环境变量创建一个全局环境变量 取消环境变量取消环境变量unsetunset 3.Shell3.Shell 程序设计的语法程序设计的语法特殊字符特殊字符变量变量命令表和语句块命令表和语句块条件测试条件测试条件语句条件语句重复语句重复语句函数函数其它其它 3.1 3.1 特殊字符特殊字符特殊字符特殊字符通配符通配符引号引号管道管道后台命令符后台命令符 特殊字符特殊字符通配符用于模式
18、匹配:通配符用于模式匹配:*匹配任何字符串,包括空字符串匹配任何字符串,包括空字符串?匹配任何单个字符匹配任何单个字符 按照范围、列表或不匹配等形式匹配按照范围、列表或不匹配等形式匹配指定的字符指定的字符!紧跟紧跟 之后,表示不在一对方括号中之后,表示不在一对方括号中所列出的字符所列出的字符 举例:举例:a-da-d,x x,yyoOoOz*z*x?y x?y rc?.drc?.d!Z!Za-f*a-f*!o*!o 模式表达式模式表达式*(*(模式表模式表)“”匹配给定模式表中 模式 的“”匹配给定模式表中 模式 的 0 0 次或多次出次或多次出现,各模式之间以现,各模式之间以|分开分开+(+
19、(模式表模式表)“”匹配给定模式表中 模式 的“”匹配给定模式表中 模式 的 1 1 次或多次出次或多次出现,各模式之间以现,各模式之间以|分开分开?(?(模式表模式表)“”匹配模式表中任何一种 模式 的“”匹配模式表中任何一种 模式 的 0 0 次或次或 1 1次出现,各模式之间以次出现,各模式之间以|分开分开(模式表模式表)“”仅匹配模式表中给定 模式 的一次出现,“”仅匹配模式表中给定 模式 的一次出现,各模式之间以各模式之间以|分开分开!(!(模式表模式表)“”除给定模式表中的一个 模式 之外,它可“”除给定模式表中的一个 模式 之外,它可以匹配其他任何东西以匹配其他任何东西 举例:举
20、例:file*(.c|.o)file*(.c|.o)file+(.c|.o)file+(.c|.o)file?(.c|.o)file?(.c|.o)file(.c|.o)file(.c|.o)file!(.c|.o)file!(.c|.o)引号引号”双引号”双引号由它括起来的字符(除由它括起来的字符(除$、倒引号、倒引号 和反斜线和反斜线 外)均作为普通字符对外)均作为普通字符对待待 单引号 单引号由它括起来的字符均为普通字符由它括起来的字符均为普通字符倒引号倒引号 由它括起来的字符串被由它括起来的字符串被 shellshell 解释解释为命令为命令反斜线反斜线 转意符,使原字符失去其特殊的含
21、转意符,使原字符失去其特殊的含义义 举例举例echo current directory is pwdecho current directory is pwdecho current directory is$pwdecho current directory is$pwdtoday=datetoday=dateecho Today is$todayecho Today is$todayusers=who|wc-lusers=who|wc-lecho“Filename is No$1”echo“Filename is No$1”echo“hello”echo“hello”重定向符重定向符 输
22、出重定向输出重定向输出附加重定向输出附加重定向22错误重定向错误重定向即时文件重定向即时文件重定向 举例举例bashcmdsbashcmdsmorefork.cmorefile1whofile1ps lfile1ps lfile1find./-name test 2file2find./-name test 2file2find./-name test1 2file2find./-name test1 2file2wc loutfilewc loutfilefind/-name test1.txt 2&1find/-name test1.txt 2&1 catHELPcat1.txt 2&1&
23、find/-name test1.txt 2&1&3.2 3.2 变量变量用户变量用户变量参数变量参数变量 用户变量用户变量用户变量在用户变量在 shellshell 程序内部定义的变量程序内部定义的变量变量的赋值和使用变量的赋值和使用$var=valuevar=value$echo$varecho$varreadread命令 从键盘读取数据然后赋值给变量命令 从键盘读取数据然后赋值给变量格式:格式:read var1 var2read var1 var2例:例:$read x y z$read x y z Today is MondayToday is Monday$echo$z$x$y$e
24、cho$z$x$y Monday Today isMonday Today is 变量的引用变量名前加变量的引用变量名前加$dir=/home/zsx/tmp$dir=/home/zsx/tmp$echo$dir$echo$dir$cat$dir/test1/m1.c$cat$dir/test1/m1.c 实例实例#!/bin/bash#!/bin/bashmyvar=“Hi there”myvar=“Hi there”echo$myvarecho$myvarecho“$myvar”echo“$myvar”echo myvarecho myvarecho$myvarecho$myvarecho
25、$myvarecho$myvarecho Enter some textecho Enter some textecho Enter some textecho Enter some textecho“Enter some text”echo“Enter some text”read myvarread myvarecho$myvar now equals$myvarecho$myvar now equals$myvarexit 0exit 0 参数变量(也称位置参数)参数变量(也称位置参数)环境变量环境变量 说明说明$#$#传递到脚本程序的参数个数传递到脚本程序的参数个数$0$0脚本程序的名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第2章 Shell编程 Shell 编程
限制150内