




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux下Shell编程简介,刘桂海(西安理工大学计算机科学与工程学院,陕西西安710048),1,西,2020/5/20,西,内容安排,综述篇命令篇变量篇条件测试篇控制结构篇函数篇,2,2020/5/20,西,综述篇,Shell是什么怎样写ShellCygwin简介Linux黑洞,3,2020/5/20,西,综述篇Shell是什么,壳(Shell)保护其内部的核(Kernel),4,2020/5/20,西,综述篇Shell是什么,Shell是一种具备特殊功能的程序,它是介于使用者和UNIX/Linux操作系统之核心程序(kernel)间的一个接口。为了对用户屏蔽内核的复杂性,也为了保护内核以免用户误操作造成损害,在内核的周围建了一个外壳(shell)。用户向shell提出请求,shell解释并将请求传给内核。使用较广的shell有标准的Bourneshell(sh)、KornShell(ksh)、Cshell(csh)、BourneAgainShell(bash)等。查看当前环境所用shell:echo$SHELLshell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。本质上,shell脚本是命令行命令简单的组合到一个文件里面。Shell基本上是一个命令解释器,类似于DOS下的。它接收用户命令,然后调用相应的应用程序。,5,2020/5/20,西,综述篇怎样写Shell,利用vi编辑器编辑脚本,将脚本命名为脚本功能.shShell脚本不是复杂的程序,它是按行解释的,脚本第一行总是以#!/bin/sh开头,它通知系统以下的Shell程序使用系统上的BourneShell来解释。第二行注释中写入脚本名,第三行注释开始写入脚本功能习惯。以下行进入脚本正式编写编写完后给脚本添加执行权限:chmodu+xScripName运行脚本:ScripName或./ScripName,简单脚本示例:viShowHello.sh以下为脚本内容:#!/bin/sh#ShowHello.sh#Toshowhellotosomebodyecho-n“EnterYourName:”readNAMEecho“Hello,$NAME!”保存,退出vi编辑器。为脚本添加可执行权限:chmodu+xShowHello.sh运行脚本:ShowHello.sh,6,2020/5/20,西,综述篇cygwin简介,cygwin在windows下开发linux程序!cygwin是一个在windows平台上运行的linux模拟环境,是cygnussolutions公司开发的自由软件。它把gcc、gdb、gas等开发工具进行了改进,使它们能够生成并解释win32的目标文件,开发者基于win32api写了一个unix系统库的模拟层,只要把这些工具的源代码和这个共享库(cygwindll)连接到一起,就可以使用unix主机上的交叉编译器来生成可以在windows平台上运行的工具集。软件下载:cygwin的官方网站:推荐下载:软件安装:在安装的过程中可选择默认安装路径:c:cygwin安装完后要修改cygwin目录下的cygwin.bat文件,在echooff后面加上setCYGWIN=titlentea,这是因为Cygwin的启动批处理文件需要启动Unix文件系统模拟。,7,2020/5/20,西,综述篇Linux黑洞,/dev/null是一个虚设的设备,俗称“Linux黑洞”,任何对/dev/null的写入都会成功,但数据会消失得无影无踪,没有任何反馈。所以经常把不想在屏幕显示的信息全部送到/dev/null中,在shell脚本中用得比较多。如:lsl/dev/null还可以用来清空文件的内容:cat/dev/nullFileName,8,2020/5/20,西,命令篇,用户管理目录管理文件管理权限管理,9,2020/5/20,西,命令篇用户管理,新建用户(useradd)useraddUserName新建用户后,会在/home目录下建立一个以UserName命名的文件夹,用户每次登录时自动定位到该文件夹下。为用户添加密码(password)passwdUserName删除用户(userdelete)userdelUserName使用p选项可以删除用户目录下的文件及与用户相关联的其他文件。新建组群(groupadd)groupaddGroupName删除组群(groupdelete)groupdelGroupName,10,2020/5/20,西,命令篇用户管理,用户身份whoami查看登录用户who选项-a显示所有用户的所有信息-H显示列标题查看用户的操作w某一时刻用户的行为用户间切换(substituteuser)suUserName如:su或suroot切换为根用户suHaison切换为名为Haison的用户,11,2020/5/20,西,命令篇目录管理,创建目录(makedirectory)mkdirDirecName删除目录(removedirectory)rmdirDirecName显示工作目录(printworkingdirectory)pwd显示目录内容(list)ls选项选项:-a显示当前目录下的所有文件,包括以.开头的文件。-l以长列表的形式显示文件列表,如:-rw-r-r-1haisonhaison18Nov210:10haison.c,12,2020/5/20,西,命令篇目录管理,改变当前目录(changedirectory)cd或cd进入登录时的主目录cd/进入根目录cd.进入上一级目录cd/home进入系统的home目录cdhome进入当前目录下的home目录目录重命名(move)mvSourceDirecNameTargetDirecName目录拷贝(copy)cpSourceDirecTargetDirec-r拷贝目录下的文件、子目录及子目录下的文件,13,2020/5/20,西,命令篇文件管理,新建文件FileName或touchFileName或viFileName删除文件(removefile)rm选项FileName选项:-i系统提示是否真要删除该文件-f删除文件之前不提示任何确认信息-r递归删除目录下所有子目录的内容文件拷贝(copy)cpSourceFileTargetFile文件链接(link)lnsSourceFileTargetFile创建文件链接,用lsl查看,会看到TargetFile-SourceFile,14,2020/5/20,西,命令篇文件管理,显示文件内容moreFileName一次一屏的显示文件内容,空格或回车显示下一屏lessFileName一次一屏的显示文件内容,空格或回车显示下一屏catFileName一次全部显示文件的内容catfile1file2file3将file1、file2的内容写到file3,覆盖file3原内容catfile1file2将file1的内容追加到file2,file2原内容不变headFileName只显示文件的前10行headnFileName显示文件的前n行tailFileName只显示文件的后10行tailnFileName显示文件的后n行nlFileName以编号的形式一次全部显示文件的内容,忽略空格,15,2020/5/20,西,命令篇文件管理,文件移动/重命名(move)mvSourceFileTargetFile将一个或多个文件移动到另外一个目录下,或者将一个文件重命名为另一个文件。文件查找(find)find路径选项如:find/-name“Linux”-print文件内容查找(grep)如:grep“main”haison.c文件类型命令lsl以长列表形式显示文件的类型等,如:-rw-r-r-,16,2020/5/20,西,命令篇权限管理,文件访问权限一个文件一经创建,就具有三种访问方式,一个文件由1个类型和9个权限位来描述,9个权限位分为3组,每组3个权限位,具体表示如下所示:,17,2020/5/20,西,命令篇权限管理,改变文件/目录的权限(changemode)chmodu/g/o/a+/-/=权限FileName/DirecName其中:+:增加指定的权限-:去掉指定的权限=:清除所选的权限并将其设置为制定的权限chmod允许使用八进制符号作为模式,改变权限。chmodPermissionCodeFileName/DirecName其中,PermissionCode按如下方式计算,4+2+1=7,4+2=6,4+1=5,所以该文件/目录具有的权限为:765,18,2020/5/20,西,命令篇权限管理,chmod命令示例假定haison.c最初具有这样的权限rwxrwxrwx,连续操作如下,19,2020/5/20,西,命令篇权限管理,-rw-r-r-1haisonhaison18Nov210:10haison.c改变文件/目录的属主(changeowner)chownOwnerFileName/DirecName如:chownDavehaison.c改变文件/目录的属组(changegroup)chgrpGroupFileName/DirecName如:chgrpDavehaison.c改变文件/目录的属主和属组chownowner:groupFileName/DirecName如:chownDave:Davehaison.c,20,2020/5/20,西,变量篇,变量可以定制用户本身的工作环境,使用变量可以保存有用信息,使系统获知用户相关设置,也用于保存暂时信息。变量一般都用大写字母表示使用echo命令可以显示单个变量的取值,要在变量名前面加$如:USER=“haison”echo$USER如果设置变量时,不想再改变其值,可以将其设置为只读,只要在变量名前加readonly使用set命令可以显示所有本地定义的shell变量使用unset变量名可以清除对变量的定义,21,2020/5/20,西,变量篇,22,2020/5/20,西,变量篇,示例:#!/bin/sh#VarTest.sh#TotestthevariablesUSER=haisonechoHello,$USER,theoutputofthisscriptareasfollows:echoThescriptnameis:basename$0echoThefirstparamofthescriptis:$1echoThesecondparamofthescriptis:$2echoThetenthparamofthescriptis:$10echoAlltheparamsyouinputare:$*echoThenumberoftheparamsyouinputare:$#echoTheprocessIDforthisscriptis:$echoTheexitstatusofthisscriptis:$?,23,2020/5/20,西,条件测试篇,文件状态测试,示例:-shaison.c0表示成功,其他为失败,下同。,逻辑操作符-a逻辑与(and),操作符两边均为真,结果为真,否则为假。-o逻辑或(or),操作符两边一边为真,结果为真,否则为假。!逻辑否,条件为假,结果为真,反之。,示例:-rhaison.cawhai.c,24,2020/5/20,西,条件测试篇,字符串测试,示例:-z$SHELL,数值测试,示例:“10”-eq“12”,25,2020/5/20,西,控制结构篇,26,2020/5/20,西,控制结构篇if语句,格式1if条件then命令fi,格式2if条件;then命令fi,或,格式3if条件then命令1else命令2fi,格式4if条件1then命令1elif条件2then命令2else命令3fi,示例#!/bin/sh#ifTest#toshowthemethodofifecho-eEnterthefirstinteger:creadFIRSTecho-nEnterthesecondinteger:readSECONDif$FIRST-gt$SECONDthenecho$FIRSTisgreaterthan$SECONDelif$FIRST-gt$SECONDthenecho$FIRSTislessthan$SECONDelseecho$FIRSTisequalto$SECONDfi,27,2020/5/20,西,控制结构篇case语句,格式case值in模式1)命令1;*)命令n;esac取值后面必须为单词in,每一个模式必须以右括号结束。取值可以为变量或常数。取值检测匹配的每一个模式,一旦模式匹配,其间所有命令开始执行直至;。执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用*号捕获该值,再接受其他输入。,示例#!/bin/sh#caseTest#totestthemethodofcaseUSER=whoamicase$USERinroot)echo“Youcandoalltheoperations”;Dave)echoYoucandosomeoperations”;*)echoSorry,youcannotdoanything;esac,28,2020/5/20,西,控制结构篇for循环,格式for变量名in列表do命令done当变量值在列表里,for循环即执行一次所有命令,使用变量名访问列表中取值。嵌套循环可以将一个for循环嵌在另一个for循环里,示例#!/bin/sh#forTest#totestthemethodofforCOUNTER=0forFILESin*doCOUNTER=expr$COUNTER+1doneechoThereare$COUNTERfilesinpwd,29,2020/5/20,西,控制结构篇until循环,格式until条件do命令doneuntil执行一系列命令,直至条件为真时停止,示例#!/bin/sh#untilTest#totestthemothodofuntilIS_ROOT=who|greprootuntilIS_ROOTdoIS_ROOT=who|greproots
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑摄影前期提升方案设计
- 建筑竞赛海报制作方案设计
- 电气安全培训接线规范课件
- 电气安全作业培训
- 圆柱子包钢加固施工方案
- 苏州燃气顶管施工方案
- 浙江水帘施工方案编制
- 电梯维保安全培训要求课件
- 电梯监管安全培训课件
- 职教中心建筑方案设计案例
- 2025年TCL集团校园招聘笔试模拟试题及答案解析
- 2021-2025年高考化学真题知识点分类汇编之氮及其化合物
- 2025-2026学年人教版小学劳动技术二年级上册教学计划及进度表
- 2025西藏日喀则市高级技工学校招聘专业实训指导教师和后勤保障人员20人备考练习题库及答案解析
- 危重患者安全转运指南
- 2025中级经济师《建筑与房地产经济》章节千题
- 医院医患纠纷处理课件
- 2025-2026学年人教鄂教版(2024)小学科学三年级上册教学计划及进度表
- 手机行业知识培训课件
- 湖北省腾云联盟2026届高三8月联考物理(含答案)
- 教学资料管理制度
评论
0/150
提交评论