linux操作系统课件3.ppt

上传人:qwe****56 文档编号:70279303 上传时间:2023-01-18 格式:PPT 页数:40 大小:658KB
返回 下载 相关 举报
linux操作系统课件3.ppt_第1页
第1页 / 共40页
linux操作系统课件3.ppt_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《linux操作系统课件3.ppt》由会员分享,可在线阅读,更多相关《linux操作系统课件3.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、shell的基本功能 v命令的解释执行v环境变量的设置v输入/输出重定向vshell程序设计bash的初始化过程v1.bash检查文件/etc/profile是否存在.如果存在,bash则读取该文件,初始化环境变量;否则跳过.v2.bash检查用户主目录下的文件.bash_profile是否存在.如果存在,bash则读取该文件;否则跳过.v3.bash检查用户主目录下的文件.bash_login是否存在.如果存在,bash则读取该文件;否则跳过.v2.bash检查用户主目录下的文件.profile是否存在.如果存在,bash则读取该文件;否则跳过.这些步骤都结束完后,就显示默认的提示符$.输入

2、/输出重定向:UNIX下流的概念 Unix/Linux系统中,文件的组织方式是按字节进行系统中,文件的组织方式是按字节进行的,文件之间和设备之间的信息传递是按字节流进行的,文件之间和设备之间的信息传递是按字节流进行的,所以信息流的概念在系统管理中很重要。正因为的,所以信息流的概念在系统管理中很重要。正因为文件被看成字符流,文件被看成字符流,Unix类系统对文件后缀名没有强类系统对文件后缀名没有强制要求,后缀名可以是任意的。制要求,后缀名可以是任意的。在系统内部,对用户文件的操作被转换为对在系统内部,对用户文件的操作被转换为对文件描文件描述符述符(fd)的操作,在执行输入输出命令时,的操作,在执

3、行输入输出命令时,Linux系统系统把输入把输入/输出文件与信息流的概念对应起来。输出文件与信息流的概念对应起来。注:用一个整数来代表所打开的文件,这个整数就是注:用一个整数来代表所打开的文件,这个整数就是文件描述符。文件描述符。输入/输出重定向:UNIX下流的概念 Linux自动为每条执行的命令(进程)打开三个文件,分别用于读取输入数据、发送输出数据和错误信息,这三个文件分别叫标准输入(stdin)、标准输出(stdout)和标准错误文件(stderr)信息流的标准定义:v标准输入流(stdin):文件描述符0,默认为键盘.v标准输出流(stdout):文件描述符1,默认为显示器.v标准错误

4、流(stderr):文件描述符2,默认为显示器.输入/输出重定向输入输出重定向就是对系统信息流标准定义的修改v输入重定向 例:prog ,例:pwd outfile ls l file1例:$prog outfilev错误流重定向&例:gcc hello.c&log管道线(pipeline)的概念 v在命令中利用管道线(|)将命令隔开,实现将一个程序或命令的输出作为另一个程序或命令的输入.v例:$ls-l|wc-l$ls l/dev|grep fd$cat file|grep hello|wc-lv下列字符可作命令表的分隔符 ;或 Enter&:若前一命令执行成功,则执行后一命令|:若前一命令

5、执行失败,则执行后一命令如果不用管道线,该如何实现这一功能?如果不用管道线,该如何实现这一功能?v例:write zhang letter|mail zhang letterv例:mail zhang letter&rm letterv三通道命令tee实现一个数据流向多个输出分流 ps ef|tee progm.ps环环境境变变量是系量是系统预统预定定义义的一些的一些变变量,如量,如PATH,LOGNAME等等变变量,例如:量,例如:echo$PATHv查阅查阅命令命令envv相关文件相关文件:/etc/profile,/.bash_profile ,/.bash_login /.profil

6、e环境变量的设置环境变量的设置 shell程序程序:一种解一种解释执释执行的行的脚本脚本(script)语语言言,类类似于似于DOS 下的下的.bat文件文件,但功能更但功能更强强.shell是按行解是按行解释执释执行的行的,注注释释在行首加在行首加#,习惯习惯文件的第一文件的第一行以行以”#!/bin/sh”开开头头,指明使用哪种解指明使用哪种解释释器器.执执行方式行方式(三种三种):1.$sh file.sh2.$sh file.sh3.首先修改首先修改shell程序的程序的权权限限为为用用户户可可执执行行,如如:$chmod 755 file.sh 然后在命令行下直接然后在命令行下直接输

7、输入入:$./file.sh (未打通路径,若打通路径,未打通路径,若打通路径,./不需要不需要)Shell Programmingvshell的的变变量通常只有字符量通常只有字符类类型,在型,在shell编编程中也会出程中也会出现现一一些数些数值计值计算的量,但它算的量,但它们们也是基于字符也是基于字符类类型完成的。型完成的。v变变量的量的赋值赋值.例例:UNIX=SystemV 或或 UNIX=“SystemV OS”v变变量的引用量的引用:在在变变量名前加量名前加$,如如$UNIX 或或$UNIX$UNIXtm打通路径:打通路径:$PATH=$PATH:$HOME /$HOME代表需要添

8、加到路代表需要添加到路径径变变量中的目量中的目录录名名shell变量的使用变量的使用不同的引号不同的引号对对shell变变量量产产生不同的效果生不同的效果.1)单单引号引号:shell将将单单引号中的内容看成引号中的内容看成纯纯粹的字符串,如:粹的字符串,如:$file=report$echo The time is date,the file is$file 结结果:果:The time is date,the file is$file2)双引号双引号”:shell对对双引号中的特殊字符双引号中的特殊字符进进行解行解释释,如:,如:$echo“The time is date,the fil

9、e is$file”3)反引号反引号:对对反引号中的内容作反引号中的内容作为为shell命令命令执执行,如:行,如:$TT=date$echo$TTshell变量的使用变量的使用v变变量的作用域量的作用域 shell变变量也有局部定量也有局部定义义和全局定和全局定义义之分。不做特殊之分。不做特殊说说明的明的变变量均是局部量均是局部变变量,只在量,只在为为它它赋值赋值的的shell进进程中起作程中起作用。要是用。要是变变量在多个量在多个进进程中都能起作用,通程中都能起作用,通过过export命令命令使其使其变为变为全局全局变变量量.见书见书本本71页页例子例子shell变量的使用变量的使用v命令

10、的位置命令的位置变变量量 在在shell中命令的位置中命令的位置变变量量类类似于似于C语语言中言中argc和和argv参参数的功能,它数的功能,它们们主要主要对对命令行中各个参数的位置命令行中各个参数的位置进进行描述。行描述。记记住住$#,$?,$,$!的定的定义义$#位置参数的个数位置参数的个数$?为为前一命令返回的状前一命令返回的状态值态值(0为为正常)正常)$当前当前shell进进程的程的pid值值$!最近最近访问访问的后台的后台进进程的程的pid值值$*用用单单字符串字符串显显示示传递传递参数参数shell变量的使用变量的使用例例echoarg.sh内容如下:内容如下:echo$#fo

11、r VAR in$*do echo$VARdone运行:运行:$echoarg.sh first second third$0$1$2$3结结果:果:3 first second thirdshell变量的使用变量的使用v变变量的替量的替换换 例:例:$echo“the CDPATH is$CDPATH”当当$CDPATH未被未被赋值时赋值时,显显示示 the CDPATH is 容易容易让让用用户产户产生困惑生困惑.可使用:可使用:1.$var:-word2.$var:=word3.$var:+word可将上例改可将上例改为为:$echo“the CDPATH is$CDPATH:-Unde

12、fined”则显则显示:示:the CDPATH is Undefinedshell变量的使用变量的使用v格式格式:test expre 或或 expre 当表达式的当表达式的值为值为真真时时,test命令返回真命令返回真值值0,否否则则返回假返回假值值非非0.v对对文件特性的文件特性的测试测试:test dfrwxs filev对对字符串内容的字符串内容的测试测试:建建议访问变议访问变量使用量使用”$var”的形式的形式v对对整数的整数的测试测试例:例:x1=“005”,x2=5,注意:注意:$test“$x1”=“$x2”和和$test“$x1”-eq“$x2”的区的区别别test命令的使

13、用命令的使用vif语语句句 (1)无分支条件无分支条件语语句:句:if then (2)二分支条件二分支条件语语句:句:if then else (3)多分支条件多分支条件语语句:句:if then elif 条件控制语句条件控制语句v格式:格式:if condition then commands fi 例:例:if$#=1 then cp$1$HOME/user1 fi vi$1 exit 0无分支条件语句无分支条件语句v格式:格式:if condition then true-commands else false-commands fiP77 例例5.5二分支条件语句二分支条件语句v格

14、式:格式:if condition_1 then commands_1 elif condition_2 then commands_2 elif condition_3 then commands_3 .else commands_n fi多分支条件语句多分支条件语句例例5.7:#!/bin/shif$#-lt 3 then echo“usage:basename$0 arg1 arg2 arg3”&2 exit 1fiecho“arg1:$1”echo“arg2:$2”echo“arg3:$3”分支条件语句分支条件语句例例5.8:testdir#!/bin/shDIREC=$1if-z l

15、s a$DIREC then echo“$DIREC is indeed empty”else echo“$DIREC is not empty”fi运行运行时时可可输输入:入:$testdir/home/user1例例5.9自己看自己看分支条件语句分支条件语句vcase语语句句:case in 结结构构 case word in pattern-1)pat1-list1;pattern-2)pat2-list2;*)default-list;esac条件控制语句条件控制语句例例5.10:case$#in 1)cat$1;2)cat$2$1;*)echo“usage:append.sh”;es

16、ac条件控制语句条件控制语句例例5.11:#!/bin/shhour=date+%Hcase$hour in 01-9|101)echo“Good morning!”;1234567)echo“Good afternoon!”;*)echo“Good evening!”;esac例例5.12:条件控制语句条件控制语句vfor循循环环:for in done结结构构 vwhile循循环环:while do done结结构构 vuntil循循环环:until do done 循环语句循环语句vfor循循环环:for in done结结构构 for variable in list-of-value

17、sdo commands last-commanddone 循环语句循环语句例例5.13:#!/bin/shcd$HOMEfor dir in cc work do echo“.in$dir”cd$dir for file in*.c do ls l$file done cd.done循环语句循环语句vwhile循循环环:while-do-done结结构构 只要循只要循环环条件条件为为真就真就继续继续循循环环下去。下去。while conditiondo commands last-commanddone例例5.14 循环语句循环语句vuntil循循环环:until-do-done结结构构 只

18、要循只要循环环条件条件为为假假(非非0值值)就就继续继续循循环环下去。下去。until conditiondo commands last-commanddone另外,和另外,和C语言一样,语言一样,break和和continue语句也可以使用。语句也可以使用。循环语句循环语句v例例5.15 uonuntil who|grep“$1”/dev/nulldo sleep 30doneecho“0707$1 is logged on.”exit 0运行:运行:$uon lili&循环语句循环语句expr是是对对shell变变量量进进行算行算术术运算的操作运算的操作.例:例:$count=0$cou

19、nt=$count+1$echo$count显显示示为为0+1$count=expr$count+1$echo$count显显示示为为1expr命令命令在程序中在程序中显显示示错误错误信息信息 echo“usage:basename$0 arg1 arg2”&2将不必要的信息送入系将不必要的信息送入系统统垃圾文件垃圾文件/dev/null(黑洞黑洞)中中例例5.17#!/bin/shif cp myfile myfile.bak /dev/null 2&1 then echo“good copy”else echo“basename$0:error could not copy the fil

20、es”&2fishell编程中常用的其他语句编程中常用的其他语句在程序运行中在程序运行中读读取取标标准准输输入流信息入流信息 read word1 word2rest 注意注意:read语语句每次接受句每次接受输输入以入以换换行行(回回车车)结结束束,将将输输入按照入按照IFS(默默认为认为空格空格,Tab,回回车车)定定义义的分隔符分成的分隔符分成不同的域。不同的域。见见例例5.18shell编程中常用的其他语句编程中常用的其他语句例例5.18 read_test#!/bin/shecho”give me a long sentence:”read word1 word2 restecho

21、e“$word1n$word2n$rest”echo”end of my act.”运行后运行后输输入:入:lets test the read command.输输出:出:letstestthe read command.end of my actshell编程中常用的其他语句编程中常用的其他语句交互式交互式调试调试利用多窗口多利用多窗口多进进程程边调试边调试、边编辑边编辑 用用shell程序提供的跟踪功能程序提供的跟踪功能进进行行调试调试 -v x选项选项shell程序的调试方法程序的调试方法 假设假设score.txt文件中保存两个班级的同学的数学文件中保存两个班级的同学的数学成绩,请编

22、写一个成绩,请编写一个shell程序计算每个班级的学生程序计算每个班级的学生人数和平均分。人数和平均分。score.txt内容如下:内容如下:wangpin:class1:87 wubo:class2:96 zhanghua:class1:65 xiaonong:class2:88 jiangbo:class2:93 shell程序举例程序举例#!/bin/shSCORE1=0SCORE2=0NUMBER1=0NUMBER2=0SAVEDIFS=$IFSIFS=:INFILE=score.txtshell程序举例程序举例while read NAME CLASS SCOREdo case$CL

23、ASS in class1)NUMBER1=expr$NUMBER1+1 SCORE1=expr$SCORE1+$SCORE ;class2)NUMBER2=expr$NUMBER2+1 SCORE2=expr$SCORE2+$SCORE ;*);esacdone$INFILEshell程序举例程序举例SCORE1=$(echo scale=2;$SCORE1/$NUMBER1|bc)SCORE2=$(echo scale=2;$SCORE2/$NUMBER2|bc)echo class student number average score echo-echo 1$NUMBER1$SCORE1 echo 2$NUMBER2$SCORE2 shell程序举例程序举例

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁