linuxShell脚本进阶课件

上传人:磨石 文档编号:240738203 上传时间:2024-05-04 格式:PPT 页数:48 大小:168KB
返回 下载 相关 举报
linuxShell脚本进阶课件_第1页
第1页 / 共48页
linuxShell脚本进阶课件_第2页
第2页 / 共48页
linuxShell脚本进阶课件_第3页
第3页 / 共48页
点击查看更多>>
资源描述
Lesson08Shell进阶进阶复复习习vi常用命令:模式切换,光标控制,复制,粘贴,保存,退出等等shell入门:echo set export alias history内容提要内容提要配置文件特殊符号命令重定向管道命令Shell ScriptsBASH Shell的配置文件的配置文件系统设置(所有用户有效)/etc/profile设置系统范围内的环境变量:PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC。比如需要修改历史命令的记忆数量,可以在这里把 HISTSIZE=1000 这一行进行修改(一般改到50)。设置启动时执行的程序。例如/etc/pro下面的所有.sh脚本都将被执行/etc/bashrc设置登录之后需要设置的环境变量,例如其中定义了uid比99打的话umask设置为002,否则设置为022设置命令别名/etc/man.config定义了使用man命令时,查找man信息的路径BASH Shell的配置文件的配置文件个人设置(只对本用户有效)/.bash_profile定义用户的个性环境变量以及需要运行的程序。如:JAVA_HOME=/app/java/jdk1.5.0_11 export JAVA_HOME PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin export PATH/.bashrcBASH的个性化设置,例如个人常用变量以及命令别名/.bash_history命令历史/.bash_logout注销的时候执行的命令,默认只是调用clear清屏,可以把history-c加上(清空历史命令记录)BASH Shell的配置文件的配置文件执行文件的命令:source语法:source 作用:在当前的shell环境中读取和执行中的脚本。如果修改了用户的配置文件,可以通过注销再登录来自动运行新的修改。也可以通过执行source命令使之生效。如:echo alias lsl=ls-al|less .bashrc lsl=无效 source.bashrc lsl,输出重定向,分别表示替换和增加单引号,其中的变量失效“双引号,其中变量有效字符组合 引用命令执行结果Ctrl+C 终止当前执行的命令Ctrl+Z 暂停当前执行命令Ctrl+D 输入结束Ctrl+M 回车特殊符号特殊符号举例:ls test*=列出当前目录下所有以test开头的文件ls test?=列出以test开头且文件名为5个的字符文件ls test?=列出以test开头且文件名称为7个字符文件cp test1-5/tmp=拷贝test后面是数字1到5的文件至/tmp cd/lib/modules/uname-r/kernel/drivers t就会把结果输出到文件t中,屏幕上啥也没有。而且如果t文件不存在,则新建该文件,如果t存在,那么起内容被覆盖BASH的三个“标准”标准输入:代码为0,使用方式为错误输出:代码为2,使用方式为2命令重定向命令重定向重定向的使用方式:命令 设备或者文件 1 2 常用符号和设备:由:将原本在屏幕输出的数据输出到右边的文件或者设备(如打印机):将原本在屏幕输出的数据追加到右边,与不同的是,该文件将不会被覆盖而是增加 2:将原本在屏幕输出的错误数据输出到2的右边/dev/null:“黑洞”设备,来什么扔什么命令重定向命令重定向重定向的使用方式举例:find/-name test/dev/null/dev/null/tmp/correct 2/tmp/err/tmp/correct 2&1a 2a/dev/null将他丢掉错误信息与正确信息需要分别输出时管道命令管道命令什么是管道?管道是指一个命令的标准输出可以作为另外一个命令的标准输入的机制。每个命令完成自己的独立任务,管道提供了一种协作机制把管道“连接起来”的符号:|注意:管道不能注意:管道不能处处理理标标准准错误错误信息信息管道命令管道命令典型应用问题显示文件的10行到20行分页显示/etc下面的所有文件查看当前登录用户的数量查询本月root用户的登录次数管道命令管道命令cut切割命令,用于对行的文本进行切分语法:cut-d 分隔字符-cf fieldsd参数指定用于切分的标志字符c参数指定提取每行的多少字符f参数指定分割之后取哪一个域(块),编号从1开始。可以使用逗号表示同时取出多个域(如1,4),也可以使用“-”表示域的范围(如13)注意:注意:-c和和-d不能一起用,不能一起用,-f必必须须和和-d结结合合管道命令管道命令cut命令实战cat/etc/passwd|cut-d:-f1将 passwd 这个文件每一行里头的:用来作为分隔号,并列出第一个区块(姓名)。root test/root#last|cut-d -f1以空格符为分隔,并列出第一个域(用户名)root test/root#last|cut-c1-20将last结果中每行的1-20个字符取出管道命令管道命令sort排序命令语法:sort-nru -n:使用纯数字排序,否则以字母顺序排序 -r:反向排序 -u:相同行只列出一次管道命令管道命令sort命令实战按照用户GID排序 tail/etc/passwd|cut-d:-f4|sort tail/etc/passwd|cut-d:-f4|sort-n tail/etc/passwd|cut-d:-f4|sort-nr tail/etc/passwd|cut-d:-f4|sort-nur管道命令管道命令wc计数命令语法:wc-lmw参数说明:-l:多少行 -m:多少字符,包括空格 -w:多少单词,以空格来进行分割举例:who|wc-l who|wc-w cat/etc/passwd|wc-w管道命令管道命令uniq去掉重复行的命令语法:uniq-cdu参数说明:-c 在每行的前面显示出现次数 -d 只显示出现次数大于大于1的行 -u 只显示出现次数等于等于1的行注意:uniq只能去除相只能去除相邻邻的重复行的重复行实验实验管道命令管道命令tee从标准输入读取,同时输出到标准输出以及文件语法:tee-a参数说明:-a 附加到文件而不是覆盖 举举例:例:last|tee last.lst|cut-d -f1 last|cut-d -f1|tee last2.lst管道命令管道命令tr转换或者删除字符语法:tr-ds SET1 SET2参数说明:不带参数:把SET1中的字符转化为SET2 -d 删除SET1中的字符 -s 把输入数据中包含在SET1中的重复字符去除 举举例:例:last|tr a-z A-Z =小写小写变变大写大写last|tr 0-9$=数字数字变变美元美元cat/etc/passwd|tr-d:=去掉冒号去掉冒号管道命令管道命令grep语法:grep-e PATTERN FILE.打印匹配条件的行,如果存在FILE参数,那么输入来自文件,否则来自标准输入。参数说明:-e 指定PATTERN为匹配模式,常用于表达式 以-开头的情况 举举例:例:查询查询本月本月hexy的登的登录录次数:次数:last|grep hexy|wc-l管道命令管道命令正则表达式.代表一个任意字符,一定要有一个字符存在代表一个任意字符,一定要有一个字符存在?匹配匹配0次或者次或者1次,也可以用于表示次,也可以用于表示单单一字符一字符*匹配任意次,也可以用于表示任意字符匹配任意次,也可以用于表示任意字符list 列表中的字符列表中的字符range 列表中范列表中范围围内的字符内的字符,范范围围用用“-”分隔分隔管道命令管道命令正则表达式list 不属于不属于list的元素的元素,与与 list 相反相反range 不属于不属于range的元素,与的元素,与 range相反相反n 与前一个相同条件与前一个相同条件连续连续匹配匹配n个个n,m 与前一个相同条件与前一个相同条件连续连续匹配匹配n到到m个个管道命令管道命令正则表达式实验,假设有如下文本,文件名称为t:hi,i am eric,my phone is mobile phone is at changsha,i will use my id is 22334455667my email is eric-hxmay be u can also use ERIC-HXcall me pleasebye管道命令管道命令问题:如何如何查查找文本中的移找文本中的移动电话动电话?grep-e 130-99 t如何如何查查找文本中的固定找文本中的固定电话电话号号码码?grep-e 00-92,3-0-97,8 tShell Scripts什么是什么是Shell Scripts?一系列一系列连续连续命令命令如何如何执执行?行?使文件具使文件具备执备执行属性,然后行属性,然后执执行行使用使用sh命令,如命令,如sh aShell Scripts建立第一个脚本:建立第一个脚本:vi test01输输入入 echo hello scripts world保存退出保存退出增加可增加可执执行行权权限:限:chmod a+x test01执执行行./test01去掉可去掉可执执行行权权限:限:chmod a-x test01执执行行./test01执执行行 sh test01Shell Scripts默默认变认变量量类类型是字符串,其他型是字符串,其他变变量声明用量声明用d:语语法:法:declare-afir 变变量名称量名称=初始初始值值含含义义:-a定定义义数数组组,-f定定义义函数,函数,-i定定义义整数,整数,-r定定义义只只读变读变量量Shell Scripts变变量声明量声明举举例:例:a1=10b1=20c1=$a1*$b1echo$c1declare-i a2=10 declare-i b2=20declare-i c2=$a2*$b2echo$c2实验实验Shell Scripts跟用跟用户户交互交互read:echo input u name:read nameecho u name is$name参数的参数的读读取:取:$0代表命令或者脚本名称,代表命令或者脚本名称,$1代表第一个参数,一代表第一个参数,一直到直到9实验实验Shell Scripts常用的常用的逻辑逻辑判断:判断:-f 检测检测文件是否存在文件是否存在-d 检测检测目目录录是否存在是否存在-e 检测对检测对象是否存在,象是否存在,对对象可以是任何象可以是任何东东西西-r 文件是否具文件是否具备备可可读读属性属性-w 是否可写是否可写-x 是否可是否可执执行行-s 文件是否非空文件是否非空-u 文件是否具文件是否具备备SUID-g 文件是否具文件是否具备备SGID-k 文件是否具文件是否具备备sticky bit属性属性&逻辑逻辑与与|逻辑逻辑或或Shell Scripts常用的整数运算符:常用的整数运算符:-eq 等于等于-ne 不等于不等于-lt 小于小于-gt 大于大于-le 小于或等于小于或等于-ge 大于或等于大于或等于Shell Scripts常用的字符串运算符:常用的字符串运算符:str 若若str为为非空字符串非空字符串则为则为真真str1=str2 若若str1与与str2相同相同则为则为真真str1!=str2 若若str1与与str2不相同不相同则为则为真真str1str2 若若str1比比str2排序排序较较大大则为则为真真-z str 若若str长长度度为为0则为则为真真-n str 若若str长长度大于度大于0则为则为真真Shell Scripts条件判断:条件判断:最最简单简单的条件判断的条件判断if condition;then actionfi注意:注意:在中,只能有一个判断式在中,只能有一个判断式在与之在与之间间,可以使用,可以使用&或或|组组合合Shell Scripts条件判断:条件判断:复复杂杂的的if语语句:句:if condition;then actionelif condition2;then action2elif condition3;then else actionxfiShell Scripts问题问题:如果用如果用户输户输入入Y或者或者y就打印就打印hello,否,否则则打印打印bye,这这个脚本个脚本该该如何写?如何写?echo press any key to continueread keyif$key=y|$key=Y;then echo helloelse echo byefiShell Scripts条件判断:条件判断:分支判断:分支判断:case 字符串字符串 in 串串1)动动作作1;串串2)动动作作2;*)动动作作3 esacShell Scripts问题问题:根据用根据用户输户输入字符串的入字符串的长长度判断,如果度判断,如果长长度度为为3,就在其前面加入就在其前面加入00,如果,如果为为4,则则加入加入0,其他情况,其他情况则则加入加入haha_,打印最后,打印最后结结果,果,该该如何写?如何写?echo input a string:read strcount=echo$str|wc-mcase$count in4)str=00$str;5)str=0$str;*)str=haha_$stresacecho now str is:$strShell Scripts循循环环:for语语句:句:for(条件条件1;条件条件2;条件条件3)do actiondonefor 变变量量 in 变变量量1 变变量量2.do actiondoneShell Scripts循循环环:while语语句:只要条件句:只要条件满满足就一直足就一直执执行行while 条件条件doactiondoneShell Scripts循循环环:until语语句:直到句:直到满满足条件才退出足条件才退出until 条件条件do动动作作doneShell Scripts脚本脚本调试调试:sh-nv scripts-n 不不执执行脚本,行脚本,查询查询脚本脚本语语法,有法,有错误错误就列出就列出-v 执执行脚本之前,先将脚本内容提示在屏幕上行脚本之前,先将脚本内容提示在屏幕上查查看脚本看脚本实实例(例(创创建学生建学生帐帐号)号)小小结结配置文件.bashrc.bash_profile 特殊符号*;&|重定向与管道脚本readifcaseforwhileuntil
展开阅读全文
相关资源
相关搜索

最新文档


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


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

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


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