chap 2 Linux Shell编程.ppt
《chap 2 Linux Shell编程.ppt》由会员分享,可在线阅读,更多相关《chap 2 Linux Shell编程.ppt(86页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux程序设计程序设计第第2章章 Shell编程编程戴瑾戴瑾戴瑾戴瑾2主要内容主要内容vShellShell基础基础基础基础vShellShell程序设计基本语法程序设计基本语法程序设计基本语法程序设计基本语法vShellShell基础基础基础基础3Shell概述概述v用户和操作系统之间的接口用户和操作系统之间的接口用户和操作系统之间的接口用户和操作系统之间的接口文件子系统文件子系统用户用户硬硬 件件 控控 制制硬硬 件件内核内核Shell用户用户用户用户用户用户高级语言和实用程序高级语言和实用程序系统调用系统调用进程进程管理管理子系统子系统进程间通信进程间通信存储管理存储管理调度程序调度
2、程序设备驱动程序设备驱动程序字符设备字符设备 块设备块设备高速缓存高速缓存核外程序核外程序用户和操作系统用户和操作系统之间的接口之间的接口Shell基基础础4Linux内核与内核与Shellv作为核外程序而存在作为核外程序而存在作为核外程序而存在作为核外程序而存在interpretShell基基础础5Shell分类分类shellshell名称名称名称名称 描述描述描述描述位置位置位置位置ashash小型小型小型小型shellshell/bin/ash/bin/ashash.staticash.static不依靠软件库的不依靠软件库的不依靠软件库的不依靠软件库的ashash版本版本版本版本/bi
3、n/bin/ash.staticash.staticbshbshashash的一个符号链接的一个符号链接的一个符号链接的一个符号链接/bin/bin/bshbshbashbash“Bourne Again Shell”“Bourne Again Shell”。LinuxLinux中的中的中的中的主角主角主角主角,来自,来自,来自,来自GNUGNU项目项目项目项目/bin/bash/bin/bashshshbashbash的一个符号链接的一个符号链接的一个符号链接的一个符号链接/bin/bin/shshcshcshC shell,C shell,tcshtcsh的一个符号链接的一个符号链接的一个
4、符号链接的一个符号链接/bin/bin/cshcshtcshtcsh和和和和cshcsh兼容的兼容的兼容的兼容的shellshell/bin/bin/tcshtcshkshkshKornKorn Shell Shell/bin/bin/kshkshShell基基础础6Shell的双重角色的双重角色v命令解释程序命令解释程序命令解释程序命令解释程序ShellShell的工作步骤的工作步骤的工作步骤的工作步骤打印提示符打印提示符打印提示符打印提示符得到命令行得到命令行得到命令行得到命令行解析命令解析命令解析命令解析命令查找文件查找文件查找文件查找文件准备参数准备参数准备参数准备参数执行命令执行命令
5、执行命令执行命令v独立的程序设计语言解释器独立的程序设计语言解释器独立的程序设计语言解释器独立的程序设计语言解释器KISS(Keep It Small and Stupid)KISS(Keep It Small and Stupid)可复用工具可复用工具可复用工具可复用工具toolstools重定向和管道重定向和管道重定向和管道重定向和管道Shell基基础础7Shell程序程序v也称也称也称也称Shell Shell script(Shellscript(Shell脚本脚本脚本脚本)是一组命令是一组命令是一组命令是一组命令举例举例举例举例vShellShell编程的基础知识编程的基础知识编程的
6、基础知识编程的基础知识LinuxLinux环境环境环境环境LinuxLinux命令命令命令命令ShellShell程序结构程序结构程序结构程序结构#!/bin/shls-altouch aacp aa bbShell基基础础8Shell脚本结构脚本结构#!/bin/sh#first.sh#This file looks through all the files in the current#directory for the string POSIX,and then displays those#files to the standard outputfor file in*do if g
7、rep q POSIX$file then more$file fidoneexit 0Shell基基础础9Shell脚本的执行方法脚本的执行方法v方法方法方法方法1 1$shsh script_filescript_file v方法方法方法方法2 2chmodchmod +x+x script_filescript_file(可选可选可选可选chownchown,chgrpchgrp)././script_filescript_filev方法方法方法方法3 3sourcesource script_filescript_file,或,或,或,或.script_filescript_fileS
8、hell基基础础10Shell启动文件启动文件vvshsh/etc/profile/etc/profilelogin shell,system widelogin shell,system wide/.profile/.profilelogin shelllogin shellENVENVvvcshcsh/etc/csh.cshrc/etc/csh.cshrc always,system wide always,system wide/etc/csh.login/etc/csh.login login shell,system wide login shell,system wide/.csh
9、rc/.cshrc always always/.login/.login login shell login shell/.logout/.logout logout shell logout shell/etc/csh.logout/etc/csh.logout logout shell,system wide logout shell,system widevvtcshtcsh/.tcshrc/.tcshrclogin shelllogin shellvvbashbash/etc/profile/etc/profile /.bash_profile /.bash_profile /.ba
10、sh_login /.bash_login /.bash_profile/.bash_profile/etc/bash.bashrc/etc/bash.bashrc /.bashrc/.bashrcBASH_ENVBASH_ENVShell基基础础11Shell的特殊字符的特殊字符字符字符说明说明*匹配任意个字符匹配任意个字符?匹配一个字符匹配一个字符与与中的任意一个字符匹配中的任意一个字符匹配!.与不在与不在 中出现的任意字符匹配中出现的任意字符匹配主目录主目录#Shell注释注释;命令分隔符命令分隔符&先执行第一个命令;若第一个命令执行成功,执行第先执行第一个命令;若第一个命令执行成功,执
11、行第2个命令个命令|先执行第一个命令;若第一个命令执行失败,执行第先执行第一个命令;若第一个命令执行失败,执行第2个命令个命令 1)转义符转义符2)连续命令换行提示符连续命令换行提示符&后台执行后台执行Shell基基础础12Shell的特殊字符应用举例的特殊字符应用举例vv 如果当前目录下有如下文件如果当前目录下有如下文件如果当前目录下有如下文件如果当前目录下有如下文件test1 test2 test3 test4 test-5 test1 test2 test3 test4 test-5 testmesstestmess 命令命令结果结果%ls test*test1 test2 test3
12、test4 test-5 testmess%ls test?test1 test2 test3 test4%ls test123test1 test2 test3%ls 显示用户主目录下的文件显示用户主目录下的文件Shell基基础础13Shell输入输入/输出重定向输出重定向v每个处理器都由个默认的文件描述符每个处理器都由个默认的文件描述符每个处理器都由个默认的文件描述符每个处理器都由个默认的文件描述符正常情况下终端是正常情况下终端是正常情况下终端是正常情况下终端是stdoutstdout和和和和stderrstderr键盘是键盘是键盘是键盘是stdinstdin名字名字输入输入/输出输出描述
13、符号码描述符号码stdin输入输入0stdout输出输出1stderr错误输出错误输出2用户定义用户定义输入输入/输出输出3 19Shell基基础础14Shell输入输入/输出重定向输出重定向vv重定向重定向重定向重定向改变改变改变改变stdinstdin,stdoutstdout,stderrstderr或任何用户自定义文件描述符的方向或任何用户自定义文件描述符的方向或任何用户自定义文件描述符的方向或任何用户自定义文件描述符的方向创建文件创建文件创建文件创建文件追加文件使用现有文件作为输入追加文件使用现有文件作为输入追加文件使用现有文件作为输入追加文件使用现有文件作为输入合并两个输出流合并两
14、个输出流合并两个输出流合并两个输出流使用部分使用部分使用部分使用部分shellshell命令作为输入命令作为输入命令作为输入命令作为输入操作符操作符描述描述 将后面的文件作为将后面的文件作为stdout打开打开 将内容追加到文件将内容追加到文件&将将stdout和和stderr合并合并&将将stdout追加到追加到 stderr|将将stdout管道化到管道化到 stdin n&-关闭文件描述符关闭文件描述符Shell基基础础15Shell输入输入/输出重定向举例输出重定向举例vv:输出重定向:输出重定向:输出重定向:输出重定向$ls ls l l lsoutput.txtlsoutput.t
15、xtvv :追加:追加:追加:追加$psps lsoutput.txtlsoutput.txtvv出错输出重定向出错输出重定向出错输出重定向出错输出重定向 (2)(2)$kill HUP 1234$kill HUP 1234 killout.txtkillout.txt 22 errerror.txtor.txtvv:输入重定向:输入重定向:输入重定向:输入重定向$more$more|sort passort.outpassort.outShell基基础础17Shell内置命令内置命令shcsh描述描述alias/unalias命令别名命令别名ulimitlimit/unlimit限制作业对资
16、源的使用限制作业对资源的使用cdcd切换目录切换目录echoecho将参数回显到将参数回显到stdouteval计算并执行参数计算并执行参数execexec执行参数执行参数exitexit退出退出shellShell基基础础18Shell内置命令内置命令shcsh描述描述goto跳转到跳转到shell程序中指定的标签程序中指定的标签history显示历史命令显示历史命令jobsjobs显示活跃作业显示活跃作业%job no.%job no.将作业置到前台将作业置到前台killkill想作业发送一个信号想作业发送一个信号fg,bgfg,bg将进程放到前台将进程放到前台/后台后台stop终止一个后
17、台进程终止一个后台进程suspend将将shell挂起挂起loginlogin,logout登录登录/注销注销Shell基基础础19Shell内置命令内置命令shcsh说明说明set/unset设置设置/取消一个取消一个shell参数参数set/unset设置设置/取消一个本地变量取消一个本地变量exportsetenv/unsetenv设置设置/取消一个全局变量取消一个全局变量nice修改进程的修改进程的nice值值nohup不挂断地运行命令不挂断地运行命令(类似于守护进程类似于守护进程)notify作业状态变化时通知用户作业状态变化时通知用户traponintr指定在接收到信号后将要采取的
18、行动指定在接收到信号后将要采取的行动dirs显示目录堆叠中的记录显示目录堆叠中的记录popd,pushdPop/push 目录栈目录栈Shell基基础础20Shell内置命令内置命令shcsh说明说明hashrehash计算目录内容的内部哈希表计算目录内容的内部哈希表read从从stdin读取一行读取一行shiftshift切换切换shell命令命令 参数参数.source读取并执行文件读取并执行文件timestime显示执行时间显示执行时间umaskumask设置默认权限设置默认权限test测试条件表达式测试条件表达式expr显示或设置显示或设置shell 变量变量waitwait等待后台作
19、业结束等待后台作业结束Shell基基础础21主要内容主要内容vShellShell基础基础基础基础vShellShell程序设计基本语法程序设计基本语法程序设计基本语法程序设计基本语法22Shell程序设计的语法程序设计的语法v变量变量变量变量v条件测试条件测试条件测试条件测试v条件语句条件语句条件语句条件语句v重复语句重复语句重复语句重复语句v命令表和语句块命令表和语句块命令表和语句块命令表和语句块v函数函数函数函数v其它其它其它其它Shell程程序序设设计计基基本本语语法法23Shell环境变量环境变量环境变量环境变量环境变量环境变量 说明说明说明说明$HOME$HOME当前用户的登录目录
20、当前用户的登录目录当前用户的登录目录当前用户的登录目录$PATH$PATH以冒号分隔、用来搜索命令的目录清单以冒号分隔、用来搜索命令的目录清单以冒号分隔、用来搜索命令的目录清单以冒号分隔、用来搜索命令的目录清单$PS1$PS1命令行提示符,通常是命令行提示符,通常是命令行提示符,通常是命令行提示符,通常是”$”$”字符字符字符字符$PS2$PS2辅助提示符,用来提示后续输入,通常是辅助提示符,用来提示后续输入,通常是辅助提示符,用来提示后续输入,通常是辅助提示符,用来提示后续输入,通常是”字符字符字符字符$IFS$IFS输入区分隔符。当输入区分隔符。当输入区分隔符。当输入区分隔符。当shell
21、shell读取输入数据时会把一组字符读取输入数据时会把一组字符读取输入数据时会把一组字符读取输入数据时会把一组字符看成是单词之间的分隔符,通常是空格、制表符、换看成是单词之间的分隔符,通常是空格、制表符、换看成是单词之间的分隔符,通常是空格、制表符、换看成是单词之间的分隔符,通常是空格、制表符、换行符等行符等行符等行符等Shell程程序序设设计计基基本本语语法法24参数变量和内部变量参数变量和内部变量环境变量环境变量环境变量环境变量 说明说明说明说明$传递到脚本程序的参数个数传递到脚本程序的参数个数传递到脚本程序的参数个数传递到脚本程序的参数个数$0$0脚本程序的名字脚本程序的名字脚本程序的名
22、字脚本程序的名字$1,$2,$1,$2,脚本程序的参数脚本程序的参数脚本程序的参数脚本程序的参数$*$*全体参数组成的清单,它是一个独立的变量,各个参全体参数组成的清单,它是一个独立的变量,各个参全体参数组成的清单,它是一个独立的变量,各个参全体参数组成的清单,它是一个独立的变量,各个参数之间用环境变量数之间用环境变量数之间用环境变量数之间用环境变量IFSIFS中的第一个字符分隔开中的第一个字符分隔开中的第一个字符分隔开中的第一个字符分隔开$“$*”“$*”的一种变体,它不使用的一种变体,它不使用的一种变体,它不使用的一种变体,它不使用IFSIFS环境变量环境变量环境变量环境变量Shell程程
23、序序设设计计基基本本语语法法25Shell变量赋值变量赋值Bourne ShellC Shell本地变量本地变量my=testset my=test全局变量全局变量export mysetenv my test$salutation=Hellosalutation=Hello$echo$salutationecho$salutationHelloHello$salutation=salutation=Yes DearYes Dear$echo$salutationecho$salutationYes DearYes Dear$salutation=7+5salutation=7+5$echo$
24、salutationecho$salutation7+57+5注意:变量赋值时注意:变量赋值时“=”两边没有空格两边没有空格Shell程程序序设设计计基基本本语语法法26Shell变量访问变量访问vv%echo“$PAGER”%echo“$PAGER”vv%echo“$PAGER”%echo“$PAGER”使用使用使用使用避免歧异避免歧异避免歧异避免歧异vv%temp_nametemp_name=“=“hahahaha”vv%temp=“%temp=“hehehehe”vv%echo$temp%echo$temphehehehevv%echo$%echo$temp_nametemp_nameh
25、ahahahavv%echo$%echo$temp_nametemp_namehehe_namehehe_namevv%echo$%echo$temp_nametemp_name hahahahaShell程程序序设设计计基基本本语语法法27参数变量和内部变量举例参数变量和内部变量举例1vv假设脚本名为假设脚本名为假设脚本名为假设脚本名为myscriptmyscript如果执行如果执行如果执行如果执行././myscriptmyscript foofoo bar bar bazbaz,结果如何?,结果如何?,结果如何?,结果如何?#!/bin/shsalutation=Helloecho$sa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- chap Linux Shell编程 Shell 编程
限制150内