经典shell编程实例.doc_第1页
经典shell编程实例.doc_第2页
经典shell编程实例.doc_第3页
经典shell编程实例.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

经典shell编程实例如何远程杀死僵进程?所谓僵进程是指处于睡眠中,而且没用的进程。在进行并行计算时经常会有僵进程产生。由于用top看不到僵进程,所以写了如下一个叫做rkill的shell文件:#!/bin/tcsh echoInput start number of node:set N1=_FCKpd_0lt;echoInput end number of node:set N2=_FCKpd_0lt;echoInput the NAME of programset pname=_FCKpd_0lt;echo*while($N1=$N2)set h=t$N1 set ppid=rsh$h ps-ef|grep$pname|awkprintechorsh$h kill$ppidrsh$h kill$ppidN1+end echo*如何将一个index文件中的空链接删除?在目录/doc/Art_and_Photos/photo/NASA-Astronomy_Picture_of_the_Day中只有有限的几个文件,而archivepix.html文件中却链接了两千多个文件,我们的目标就是要把不存在的文件链接删除掉。#!/bin/tcsh-f#从当前目录中查找有哪些可用文件。find不支持正则表达式set tmp=find.-type f-maxdepth 1vuDLinux联盟-nameap0-90-90-90-90-90-9.html#将查找结果./ap 000303.html转换为ap 000303.html set ff1=echo$tmp|sed-es/./(ap0-96.html)/g#在文件archivepix.html中查找包含类似ap 000303.html的行,vuDLinux联盟并将其导入临时文件ftmp中grepap0-96.htmlarchivepix.html ftmp#将ftmp中的每一行转换为ap 000303.html的形式,这样ff1和ff2 vuDLinux联盟中的字符串在形式上就是相同的了。set ff2=sed-es/.*(ap0-96.html).*/gftmprm ftmp-f#比较变量ff1和ff2的内容,如果一个字符串只存在于ff2中,vuDLinux联盟那么就把文件archivepix.html中含有#该字符串的行删除掉。foreach f2($ff2)echo$f2 set flag=0 foreach f1($ff1)if($f2=$f1)then set flag=1 endif end if($flag=0)then sed-e/$f2/darchivepix.html ftmp#此句最关键之处在于$f2vuDLinux联盟可用于正则表达式。mv ftmp archivepix.html-f endif end如何将一个目录中的所有文件链接到网页中?只要将下列程序的输出导到一个文件中,再将其拷至网页的相应位置就可以了。这里最关键的是看双引号如何输出()。#!/bin/tcsh-f set dd=/doc/Art_and_Photos/Flash/flash/AGuiset ffff=find$dd-type fset n=0 foreach f($ffff)n+echo$f echoa href=$f$n,/aAGui.html end如何为一堆文件换名字?在吴老师的笔记心得中介绍了张林波的高招,但那是bash的,而且是以命令行形式给出的。为了便于理解,我将其改写为tcsh格式,并将其置于脚本文件之中,更利于使用。#!/bin/tcsh-f#-f说明直接运行该文件,而不会先运行.cshrc进行初始化rm tmp_file-f#确保该文件不存在foreach fold(*.jpg.*)set fnew=echo$fold|sed-es/.jpg.(.*)/-.jpg/gvuDLinux联盟#精华之处echomv$fold$fnew-ftmp_file end chmod a+x tmp_file./tmp_file rm tmp_file-f在这个脚本文件中,关键是精华之处。它的意义是:首先将要修改的文件名($fold)通过管道(|)传给流编辑器(sed),流编辑器对文件名进行处理,其各项的具体意义为:set fnew=echo$fold|sed-es/.jpg.(.*)/-.jpg/gsed-e命令+选项表示允许多点编辑s/re/string/用string替换正则表达式re/.jpg.(.*)/vuDLinux联盟.表示一个真正的点,.jpg.代表文件名中的.jpg.;vuDLinux联盟(.*)中的.匹配一个非换行符的字符,*匹配0个或多个先前字符,它与shell的通配符完全不同,shell的通配符代表0个或多个任意字符。.*所代表的内容被设为标签1,可在需要的地方用引用。值得注意的是:.*决不能用*来代替,因为*将表示任意个.。/-.jpg/代表标签1的内容g表示行内全面替换这里还有一个地方需要提醒,那就是将echo.引起来的不是单引号,而是键盘左上角标有上的撇号.如何解决网页中字体放大时出现重叠的问题?方案一:适用于单层目录#!/bin/tcsh-f set dir=ls.foreach d($dir)if(-d$d)then#判断是否为目录cd$d echocd$dforeach f(*.htm*.html)sed-e/0-9pt/d$f ftmp#删除所有包含9pt、12pt等关键词的行mv ftmp$f-f end cd.endif end方案二:适用于多层目录#!/bin/tcsh-f set SearchPath=/doc/Reading/everything/武侠/梁羽生set files=find$SearchPath-type f-name*.htm*foreach f($files)echo$f sed-e/0-9pt/d$f ftmp mv ftmp$f-f end如何将一个目录中所有文件名由大写变为小写我们以目录tmp为例1.进入tmp目录的上一级目录2.zip-r tmp.zip tmp/*3.mv tmp tmp-old(这是为了安全起见,此处也可改为rm-r-f tmp)4.unzip-LL tmp.zip这样,tmp目录中的文件名就全改为小写了。在确认无误后,可将tmp-old目录删除。如何将一个文件中的内容由大写变为小写最简单的做法是在/.cshrc中设如下命令:alias trtr A-Z a-z!*ttttmp;mv ttttmp!*-f此处别名必须为tr,其他的就不行,不知为什么。当需要对文件进行操作时,敲如下命令:trfilename该命令在命令行中运行没有任何问题,但是如果将其放在一个shell script文件中,然后将该文件的属性改为可执行并执行之的话,你会发现用alias设置的简化命令全部失效。解决办法为:source shell_file此处还顺便说一句,sh命令运行的是bash文件。如何使系统每隔大约3小时自动激活一次声卡1.由于我们所用的声卡驱动程序是一个试用版的,在一星期以内,它有3小时的有效时间(尚可接受)。但超过一个星期以后,有效时间就只有20分钟了,那是绝对无法忍受的!吴首教为此感到义愤填膺,于2003年9月1日坐台完毕后,组建攻关小组并亲自挂帅,带领组员王某人经过极其艰苦的奋斗,终于攻克了这一难题。短命的攻关小组在完成了其历史使命,并开完非典声卡激活经验总结表彰大会后,就地解散。茫茫天地间只留下了如下解决方案:(1)建立shell脚本文件opensound#!/bin/tcsh-f while(1)set datesave=date+%m%d%H%M%Ydate 082500002003/usr/lib/oss/soundoff/usr/lib/oss/soundon date$datesave sleep 10800 end(2)将opensound的属性改为所有人均可执行,命令为:chmod a+x opensound(3)将opensound拷贝至/usr/local/bin(4)在/etc/rc.d/rc.local中加入/usr/local/bin/opensound&/dev/null&(5)重新启动计算机。然后我们就能永远听到美妙的声音啦!(此事又一次证明:道高一尺,魔高一丈!)2.曾经我以为这一问题已圆满解决,但在使用过程中却问题多多,人生最痛苦的事莫过如此。究其原因,都是soundoff惹得祸。为了声音永驻,我将不惜CPU时间与其试比高。#!/bin/tcsh-f set datesave=date+%m%d%H%M%Ydate 082500002003/usr/lib/oss/soundoff/usr/lib/oss/soundon date$datesave sleep 8000#以上是为了在系统启动时激活声卡while(1)/usr/lib/oss/soundoff&out set flag=cat outrm out-f set N=0 if($flag!=)then#flag不是空串说明soundoff执行失败while(2)N+/usr/lib/oss/soundoff&out set f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论