欢迎来到天天文库
浏览记录
ID:51489126
大小:232.00 KB
页数:41页
时间:2020-03-24
《chap22 shell及其shell编程(自学阅读).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、shell及shell编程概述shell是UNIX系统用用户与操作系统交互的最基本工具,实际上shell除了有命令解释执行的功能外,还具备有其他的功能,如:系统环境的设置输入输出的重新定向shell程序语言的设计等。1shell基本概念不同类型的shell在应用中各有所长,但是它们主要要完成的功能是相似的。最基本的有以下五个重要功能命令解释SHELLSHELL脚本建立用户环境IO重定向建立管道1.1UNIX系统的标准流流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据
2、的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中"流"动一样在UNIX系统中,文件的组织方式是按字节进行的,文件之间,设备之间的信息传递是按字节流完成的。因此信息流的概念在UNIX中很重要。1.1.1命令处理流在操作系统中,如果将命令处理看作是“加工”那么向此“加工”输入的命令信息和由这个“加工”输出的信息可以看作信息流。如果不考虑“信息流”中包含的具体内容,只关心“信息流”和“加工”之间的关系,我们可以将命令处理中的“信息流”描述为:“命令输入信息流”和“命令输出信息流”,或者简称为“命令输入流”“命令输出流”,它们都属于命令处理流。1
3、.1.2信息流在UNIX系统中,对输入输出信息流作了如下定义文件描述符标准定义默认映射对象0标准输入流键盘1标准输出流显示器2标准错误流输出错误信息系统启动Shell程序时缺省给定了3个标准流,标准输入流(stdin),标准输出流stdout,标准错误流stderr。之所以这么区分是因为在早期的计算机系统如PDP-11的一些限制。那时没有GUI,将输出分为stdout,stderr可以避免程序的调试信息和正常输出的信息混杂在一起。shell基本功能2.1Shell命令解释2.2输入输出流重定向2.3错误流重定向2.4管道线处理2.5用户工作环境设置2.6She
4、ll程序设计2.1SHELL命令解释过程2.2shell输入输出重定向默认状态下,shell将命令的输入流设定为键盘,输出流设定为显示器,错误流也定义为显示器。但是在有些情况下,我们可以改变这些流的设定。改变流的设定常用的符号有>,>>,<三个符号。例如:ls-l>ls.txtls-l/home/user1>ls.txtls-l/home/user1>>ls.txt2.2shell输入输出重定向重定向符<表示将标准输入从键盘重新定义到另外的流。例如:prog5、例如sh,>>也能够混合使用,例如:progoutfile表示prog命令从infile中获取命令参数,然后将执行结果输出到文件outfile中。2.3错误流重定向在UNIX系统中,错误信息流是指在命令或程序执行中出现错误时系统给出的提示或警告信息,UNIX中将它们作为一个独立的标准输出流进行定义,错误信息流通常定义为显示器。当然,用户也可以根据需要对它进行重定向。不同的shell在这方面有所不同。Cshell中使用的错误流重定向符是:>&,例如:ccabc.c>&6、log.txt,即将编译过程中的输出流和错误流定向为log.txt文件。在Bshell中则不用,需要如下书写:ccabc.c2>&1log.txt2.4管道线处理管道线可以实现将一个程序或命令的输出作为另外一个程序或命令的输入,管道线作为两个命令之间的分隔符。管道线的符号是“7、”。例如有这样一组命令:$ls–l>tempfile$wc–ltempfile$rmtempfile管道线处理:$ls-l8、wc-l2.4管道线处理除此之外,还有“;”、“&”、“&&”、“9、10、”可替代管道线“11、”作为命令列表的分隔符.其中:“;”:表示多个命令顺序执行“&”:命令行尾输12、入,表示将命令的执行过程放到后台处理。“&&”:代替原有的符号“13、”,表示当左边的命令为“真”值时,执行右边的命令。“14、15、”:代替原有的符号“16、”,表示当左边的命令为“假”值时,执行右边的命令。2.4管道线处理例如:(a)pwd;who;ls–l(b)ccprgm.c&(c)writezhang17、18、mailzhang19、@redhat]#dfFilesyst
5、例如sh,>>也能够混合使用,例如:progoutfile表示prog命令从infile中获取命令参数,然后将执行结果输出到文件outfile中。2.3错误流重定向在UNIX系统中,错误信息流是指在命令或程序执行中出现错误时系统给出的提示或警告信息,UNIX中将它们作为一个独立的标准输出流进行定义,错误信息流通常定义为显示器。当然,用户也可以根据需要对它进行重定向。不同的shell在这方面有所不同。Cshell中使用的错误流重定向符是:>&,例如:ccabc.c>&
6、log.txt,即将编译过程中的输出流和错误流定向为log.txt文件。在Bshell中则不用,需要如下书写:ccabc.c2>&1log.txt2.4管道线处理管道线可以实现将一个程序或命令的输出作为另外一个程序或命令的输入,管道线作为两个命令之间的分隔符。管道线的符号是“
7、”。例如有这样一组命令:$ls–l>tempfile$wc–ltempfile$rmtempfile管道线处理:$ls-l
8、wc-l2.4管道线处理除此之外,还有“;”、“&”、“&&”、“
9、
10、”可替代管道线“
11、”作为命令列表的分隔符.其中:“;”:表示多个命令顺序执行“&”:命令行尾输
12、入,表示将命令的执行过程放到后台处理。“&&”:代替原有的符号“
13、”,表示当左边的命令为“真”值时,执行右边的命令。“
14、
15、”:代替原有的符号“
16、”,表示当左边的命令为“假”值时,执行右边的命令。2.4管道线处理例如:(a)pwd;who;ls–l(b)ccprgm.c&(c)writezhang17、18、mailzhang19、@redhat]#dfFilesyst
17、
18、mailzhang19、@redhat]#dfFilesyst
19、@redhat]#dfFilesyst
此文档下载收益归作者所有