linux2(shell编程)

上传人:hy****d 文档编号:243009819 上传时间:2024-09-13 格式:PPT 页数:55 大小:90KB
返回 下载 相关 举报
linux2(shell编程)_第1页
第1页 / 共55页
linux2(shell编程)_第2页
第2页 / 共55页
linux2(shell编程)_第3页
第3页 / 共55页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,第五章 shell编程,Linux shell,是一个,命令解释器,,用来接受并执行用户命令;,shell,环绕在,Linux,内核的外层,它是,Linux,操作系统和用户之间的接口;,Linux,下最常用的,shell bash,。,bash,是大多数,Linux,发行套件的缺省,shell,。,在命令行输入命令时,每次输入一个命令,立即可得到系统的响应。但如果经常要依次执行一组命令,可利用,shell,程序来实现,Shell,程序,是放在一个文件中的一系列的,Linux,命令,执行,shell,程序时,由,Linux,逐条解释和执行程序中的每个命令,一、shell程序文件,shell程序文件是一个特殊的文本文件,其内容包含:,一系列可在,shell,提示符下执行的命令,shell,提供的专用的命令和控制语句,shell,程序文件的运行过程是将,shell,程序文件中的命令依次执行,二、shell程序文件的建立,shell程序文件可用任何一个文件编辑器(如vi)来建立,用vi编辑器建立shell程序文件shex1的步骤:, 键入命令“vi shex1”,启动vi;, 按命令“i”,进入vi的插入状态;, 输入程序文件内容;, 按键,再键入“;”,切换到vi的命令状态;, 在“:”后键入命令“wq”,即保存文件内容后,退出vi。,例:,建立shell程序shex1,其内容为:,clear,cal 1 09,cal 2 09,cal 3 09,功能:先清屏,再显示09年的1、2、3月份的月历,三、shell程序运行的2种方法,运行shell程序有两种方法:,在,shell,环境下,将,shell,程序文件作为子,shell,程序被调用执行,sh, ,例:,sh,shex1,将,shell,程序文件视作命令来执行(因此,,shell,程序文件可以看作是将各种命令组合在一起而形成的新命令),此时必须赋予,shell,程序文件执行权限,$ ,例:,$,chmod,a+x,shex1,给程序文件赋予可执行属性,$ /home/user1/shex1,以完整的路径名键入程序名,带参数的运行命令,运行命令中有,参数,和无,参数,的,2,种情况,分别称为,带参数的运行命令,和,不带参数的运行命令,在,shell,程序中可使用的,形参,规定为只能是:,$0,、,$1,、,$2,、,$9,,共,10,个,当程序运行时,命令行中的,、,依次赋值给,$1,、,$2,、,,通常称运行命令中所带的参数为,实参,$0,是一个特殊的形参,其值规定为当前运行的,shell,程序命令本身,例:建立shell程序shex3,其内容为:,clear,cal $1 09,cal $2 09,cal $3 09,执行时输入命令的形式为:,$ sh shex3 1 2 3,则执行结果如p.143图5-3所示,第一个实参值是1,运行时代换给程序中的形参$1,第二个实参值是2,运行时代换给程序中的形参$2,第三个实参值是3,运行时代换给程序中的形参$3,命令shift作用,由于形参个数有限(10个),当参数较多时,可通过命令shift来移动形参与实参的对应关系,执行一次 shift 后,$1、$2、变为依次与 对应,再执行一次shift后,$1、$2、变为依次与 对应,依此类推,例:建立shell程序shex2,其内容为:,echo $0 $1 $2,shift,echo $0 $1 $2,运行时情况如下:,# /root/shex2 yesterday today tomorrow,/root/shex2 yesterday today,/root/shex2 today tomorrow,#,可见: $0始终是当前运行的shell程序命令本身,即/root/shex3,四、shell变量,shell程序中允许使用3种类型的变量:,系统变量,也称环境变量,它可将值传给,shell,运行的其他命令或,shell,程序使用,也就是说系统变量是,全局变量,内部变量,由系统提供,与环境变量不同,用户不能修改,用户变量,由用户定义,是在当前,shell,中使用的,局部变量,,不能被在,shell,下运行的其他命令或其它,shell,程序使用,通过,shell,提供的命令,set,,可以查看当前,shell,下定义的一系列变量及其值,变量赋值,格式:, =,功能:将等号右边的字符串赋给等号左边的变量,变量名可以由任意字符、数字或下划线组成,但数字不能作为变量名的首字符。,变量名不能包含空格、惊叹号字符,变量名不能使用shell中保留的关键词等符号,变量名不能多于一个词,因为shell使用空格分析命令、定界命令名和参数,所以若字符串中含有空格,则在字符串上加上引号,例:name1=MARY,name2=X Window,引用变量,格式:,$,功能:引用变量的值。只要在变量名前加上“$”字符,变量名即将变量值取代,例:,# name2=$name1 将变量name1值赋予变量name2,# echo $name1 在屏幕上显示变量name1的值,释放变量,格式:,unset ,功能:释放一个现存的shell变量。要慎用unset *,因为它将删除全部shell变量,例:,# unset name1,五、 shell程序中的控制流,条件判断命令test,条件表达式是控制程序流程的关键,shell提供的test命令适用于条件控制流和循环控制流,格式:,test ,功能:返回表达式成立与否的状态值,, 如果表达式成立,则test返回状态值0,, 反之,test返回状态值非0值。,(常用的表达形式见参考书P41,),例:,判断文件,/etc,目录下文件,profile,是否存在,test -e /etc/profile,当运行,shell,程序,shex,时,判断是否带参数,test -z $1,(,-z ,如字符串长度为,0,,返回真值,),判断变量,value,是否大于等于,1,并小于,3,test $value ,ge,1 -a $value -,lt,3,(, -a ,与操作, -,eq,等于返回真, -,ge,大于或等于返回真,),条件控制流, if-then-else 结构,if,then,else,fi,通常采用“,test ,”,当条件成立,则返回0;条件不成立,则返回一个非0值,注意:其中if和fi必须配对出现, if-then-fi结构,if,then,fi,(实例1:p43):,如果/etc目录中的文件profile存在,则将其复制到/home中,并分屏显示/home下的profile内容;否则在屏幕上显示信息“pro not exist!”,if test -e /etc/profile,then cp /etc/profile /home,cat /etc/pro,else echo “profile is not exist!”,fi,实例3:P44,建立程序文件shp3,存放在当前目录下。如果shp3运行时未带参数,则在屏幕上显示信息“Parameter is lost!” ,并结束程序运行;如果shp3运行时带一个参数,则判断参数所指定的文件是否存在,如果存在则复制该文件到/home;否则先在屏幕上显示信息“ found!”,然后显示程序本身。,判:带参数否?,显示不带参数,判:参数指定文件存在否?,复制该文件到/home 显示文件不存在,显示程序本身,结束程序,n,n,n,y,y,if test -z $1,-z,判$1存在否,then echo Parameter is lost!,如带一参数,else if test -e $1,则$1肯定在,then cp $1 /home,else echo File not found!,cat $0,$0,指程序本身,fi,fi,(实例6:p48):,编写shell程序shp6,存放在当前目录下。运行shp6时带一个正整数参数,将数值存入变量value;,如果该参数大于等于1但小于3,则在屏幕上显示“value is less than 3 and not less than 1”;,如果该参数大于等于3,则在屏幕上显示“value is not less than 3”;,最后以“value=xx”的形式显示变量value的值。,value=$1,if test $value -ge 1 -a $value -lt 3,then echo value is less than 3 and not less than 1,fi,if test $value -ge 3,then echo value is not less than 3,fi,echo value=$value,(实例10:p51):,编1个shell程序shp10,当以命令“shp10 xx yy”执行时,(其中xx为年份参数,yy为季度参数),能自动清屏,并显示指定年份指定季度中的3个月的月历。,clear,k=$2,if test $k -eq 1,then cal 1 $1,cal 2 $1,cal 3 $1,fi,if test $k -eq 2,then cal 4 $1,cal 5 $1,cal 6 $1,fi,if test $k -eq 3,then cal 7 $1,cal 8 $1,cal 9 $1,fi,if test $k -eq 4,then cal 10 $1,cal 11 $1,cal 12 $1,fi, case结构,case,in,字符串1,),;,字符串n,),;,*,),;,esac,说明:,其中,字符串中可含通配符。,如果能同时匹配多个字符串,则只能执行第一个匹配字符串后的。,循环控制流, for-in结构,for, ,in,do,done,其中,中的值与值之间用空格分隔。,(实例2:p44):,用for命令实现,在当前目录下创建名为user0、user1、user9十个子目录,用长格式显示这10个目录的目录信息,然后用for命令删去这10个目录后,再用长格式显示这10个目录的目录信息。,for i in 0 1 2 3 4 5 6 7 8 9,do mkdir user$i,done,ls -dl user?|more,for i in 0 1 2 3 4 5 6 7 8 9,do rm -rf user$i,done,ls -dl user?|more,例:,(1)清屏,(2)当程序运行时,屏幕显示如下形式信息:,*,*This is a shell program *,*,(3)检查/home目录下,是否存在由参数1指定的文件,若不存在,则屏幕显示信息“File not found!”;若存在,则将参数1指定的文件改名为由参数2指定的文件名,然后用for命令对改名后的文件显示其长格式的目录信息和文件内容,clear,echo “*”,echo “*This is a shell program *”,echo “ *”,if test -n $1 -a -n $2,then if test $1!=$2,then if test -e $1,then mv $1 $2,for cn in “ls -l” “cat”,do,$cn $2,echo “”,done,fi,else echo File not found!,fi,fi, while 结构,while,do,done,说明:当返回0时,则执行一轮由do和done括起来的循环体中的,直到返回一个非0值时,则不再执行循环体中的命令,执行done后面的命令, until 结构,until,do,done,执行过程说明:与while 结构相反,当返回非0时,执行循环体中的命令,直到返回一个0值时,继续执行done后面的命令,。,第六章 Linux环境下的C程序开发,Linux环境下,c源程序可用vi等文本编辑器编写,c程序是以.c作为类型名的文本文件,Linux下c的编译器gcc,Linux带有gcc,它是c程序的编译器,命令格式:gcc options ,-o ,定义输出的执行文件名,当不用任何选项编译程序时, gcc会产生名为a.out的可执行文件。,以下命令将产生一个叫a.out的文件:,gcc star.c,可用-o选项指定一个可执行文件名,它将代替a.out,-g,产生用于调试的符号表,以使程序可用gdb调试,例:现已有c的源程序star.c,对它进行编译,要求产生的可执行程序名为star,并可用gdb调试,gcc -g star.c -o star,Linux下c执行程序的运行,当c的可执行程序产生后,运行的方法是在shell提示符下,键入,可执行程序的绝对路径和可执行程序名,例:运行可执行程序star,它的位置在/root下,# /root/star,注意:如果现在当前目录是/root,由以下形式发命令,则肯定引发错误,因为没有键入,可执行程序的绝对路径和可执行程序名,:,# star,Linux下c的调试工具gdb,gdb用于程序调试,命令格式:gdb ,则启动gdb,并运行指定的目标文件,并给出gdb的运行环境,gdb的提示符为(gdb),在此提示符下,可使用gdb命令进行调试,l 行号1,行号2 显示指定行号范围内的源代码,r 执行当前被调试的程序,b 行号 指定行号处设置断点,p 变量名 显示指定变量内容,c 在断点处继续往下运行程序,d 断点号删除指定断点号的断点,info break 列出所有的断点,q 退出gdb调试环境,main()函数的参数传递,main(int argc,char *argv),若可执行程序名为test,执行时带有2个参数,格式如下:,# ./test shanghai sspu,地址1,地址2,地址3,argv0,argv1,argv2,t,e,s,t,s,h,a,n,s,s,p,u,argc=3,argv是什么?,*argv是什么?,argv+是什么?,*(argv+)是什么?,*(+argv)是什么?,第七章 X-Window的基本使用,X Window,系统是在,1984,年由美国麻省理工学院(,MIT,)开发的一个分布式的,图形工作环境,,,X Window,系统现已在大多数,UNIX,系统、,Linux,以及许多计算机系统上实现,X Window,系统是具有设备独立性的用户图形操作界面,X Window,系统的体系结构是建立在客户,-,服务器(,Client-Server,)模型基础上的,,X Window,系统的应用程序称为客户,对所有客户程序提供服务的程序称为服务器,X Window,系统几乎每几年就有一个新的版本,称为发行版,X Window的启动,在Linux中启动X Window有两种方法,直接以图形方式登录,Linux,,也即在登录,Linux,后自动进入,X Window,;但退出,X window,即为退出,Linux,在,Linux,的文本方式,即,shell,提示符下输入启动,X Window,的命令:,#,startx,退出,X window,就返回到,shell,提示符状态下,X Window,启动后,屏幕上将出现一个与,Windows 95,的屏幕非常类似的画面,X Window的退出,退出X Window的常用方法有如下2种:,按键,+,退格键,菜单命令“,Start/Exit,Fvwm/Yes,Really,Quit”,可按“退出,X”,按钮,第八章 Linux的系统管理,一、数据备份与压缩,二、用户与用户组管理,一、数据备份与压缩,为了保存系统中不断增长的数据,为了防止数据的丢失与破坏,必须把硬盘上的数据复制到其它存储设备上,把这种复制操作称为,数据备份,,同时在习惯上把得到的第二套数据也称为,备份数据,或,备份,备份的存储介质可以是软盘、另一台硬盘或可写光盘、磁带等,Linux专用的备份工具,Linux提供的常用备份命令有tar、cpio等,tar能够生成称为tar文件的压缩文件,也能够将它解压缩。,tar是Linux中最常用的备份工具,能够正确地备份到任何介质上,例如,磁带、磁盘等,tar的使用,格式:,tar options2 ,功能:对由 指定的文件进行打包,或恢复还原到由指定的打包文件或备份设备上,为指定的打包备份文件或备份设备;, 指定需要加入打包文件的文件或指定欲从打包文件中恢复还原的文件;,options1必须包含:A、c、d、r、t、u、x中的一个的必选选项 ,这几个选项决定了tar究竟要做什么,Options2:可选选项,tar的必选选项,-A:向打包备份文件中追加另一个打包文件。,-c:创建一个新的打包备份文件。,-d:将一个打包备份文件与文件系统上的文件作比较。,-delete:从打包文件中删除文件。,-r:向打包备份文件的末尾追加一个文件。,-t:列出打包备份文件中所含的文件清单。,-u:仅追加比打包备份文件中的文件更新的文件。,-x:从打包备份文件中恢复还原文件,tar的可选选项,-f FILE:使用文件FILE或设备文件FILE来打包归档文件。,-M:生成/列出/恢复还原多卷的打包备份文件。,-O:将文件恢复还原到标准输出。,-P:不要除去文件名中的 /。,-remove-files:在将文件加入到打包备份文件之后,就删除它们。,-same-owner:恢复还原打包文件时,恢复文件的原文件主,说明:tar命令后使用的可选项可以省略“-”,但要注意先后次序,tar的使用举例,要求将目录,./book,打包到备份文件,book.tar,,并存放在,fd0,盘的根目录下,$ tar,cf,/,mnt/floppy/book.tar,./book,要求将,/,usr/src,目录下的所有内容多卷打包备份到,fd0,盘上,$ tar,cfM,/dev/fd0 /,usr/src,当第一张盘上的数据装满后,会提示插入第二张盘,按回车键后继续,直至所有数据备份结束,数据压缩与解压,数据压缩,:用某种紧凑的格式来存储成批数据,以节省存储空间。在使用这批数据时,必须进行相应的解压来恢复原来面目,Linux提供的数据压缩工具有以下命令:,gzip,compress,压缩命令gzip 与解压缩命令gunzip,格式:gzip options ,功能:对由指定的文件进行压缩或解压,格式:gunzip options ,功能:对由指定的且由gzip压缩的文件进行解压,例1:要求用gzip命令对 /home目录下的所有文件进行压缩,然后再解压。,$ gzip /home/*,$ gunzip /home/*,例2:要求用最高压缩比压缩 /home/user目录下的所有文件,且压缩结束后保留源文件,$ gzip -9c /home/user/*,-c:,压缩结果输出到标准输出,源文件不变。缺省时gzip将源文件压缩为.gz文件,并删除源文件,-:数字取值19,数字越小速度越快,其压缩比越小。缺省值为6,组合使用打包与压缩备份命令,例:要打包并压缩备份 /etc目录下的所有文件,$ tar cvf alletc.tar /etc,$,gzip alletc.tar,此时,在当前目录下得到文件名为alletc.tar.gz的打包与压缩文件,例:若要将文件alletc.tar.gz解包还原,$ gunzip alletc.tar.gz,在当前目录下得到alletc.tar.gz的解压文件alletc.tar,$ tar xvf alletc.tar,在当前目录下得到alletc.tar打包备份文件的所有还原文件,tar命令包括的z选项,tar命令包括的z选项,它指示tar用gzip压缩算法来自动压缩或解压缩文件。因此可用一条tar命令来完成上面的任务,$ tar cvfz alletc.tar.gz /etc,解压还原也可用一条tar命令完成,$ tar xvfz alletc.tar.gz,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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