2024年shell高级编程经典教程.docx
《2024年shell高级编程经典教程.docx》由会员分享,可在线阅读,更多相关《2024年shell高级编程经典教程.docx(37页珍藏版)》请在课桌文档上搜索。
1、非正常退出时的文件恢复:1.非正常退出后再次登录执行Vim/心时.会出现这样的界面提示:卜:依:往发我交帙Nft.e.Efa*:mottiW:Se1.Ort91,:3:57201.f文件名;AtMet,n刖户名:rxtr.:Rinyintatao电NIDi4BS9-S.*Iftt.KR:SetOctIOO1.29:472010it女执文杵析I(t三11retftiWMttiviirfi*A仔-r文忤产:阚个(、网内!本ti.或卜心越则馈i.,8MRtrtzmt*tt1.ii4W”“、”*.t*,RMMiSmtJ1.4IWWtthe1.prerv)BNrQfMnTKS.ORtMXn7.tet.m
2、(V1.*W0K1.itMU灾文件7.1et.w*ae*tt11.)1./-晨】MIJC,CUiMI,SUQ(YI“丁玲;”E323:注息交换文件.tc,c.pMat三班名:mnytatao选IDt48592 .执行vim-rtest后再次执行vimest时,出现下面的提示界面:iE三I*Xf*,tt-日照:SatOCt101;2:“2010比交擅文件所!_1.i3 .未删除iestswp文件时.即使恢复了文件仍然提示.恢复并删除才算完成:环境变量:1.7M注口.if所口考:mMfew:SrtOr1.9U:S4:57z1.fIrttinyt11cato仔naw-Iinux:rtnnyngata
3、o.)RIinuxechoSnaneIt-i(roo1.Minyt11ntao*IanHnuxechoInSnaaet.gIrootf!tnyIngatao*Pecho*inSnaae.jh,1an1.in5c.Jhrtnnyngn1.a0.产echoIartS11MepIIrcx)1.Mtnynga1.ao1anIinux.Jhecho*IenSnMe.jherc)ttinyingatao”产echo*1MSnae)Jh,Icut1.nu.JhIrv1.funyitaoccbv1onSnaecIanSnftnCIrtnnyingatao后echo.IonSnaocjhIan(!tnuxhjh
4、rootn:nyincn1.ao护un*c1.Mncrtntnyt11ntao*IrtMtnyt11fiHto、卜echoSmhc己-旨呈模+苻妇瞿拣成字母Sw金InUjIroot三n)i11tao卞echoSnItnux一,Irooietntwi3*ocho*1MSnar*IMItnuM*皆IrCXninyi11gntAecho,IMSnAX.jh1IanHnr.jhrootni八“13卞echo!amSnacpCMtM1.11)I1.1.XntS.echoIanSnaX.jh*IM11uxjh!rootiningota-*三echo*IamSmJ.Jh,Ian1mux.JbIr-nMMUc
5、j*echo,!MSaIanSCMnCroomn)ngtaMecho*Ian(Snanc.jh*IM!tnuxjhrc)ttni11gnt7unsetMf1.rrt)ngnt卞echoSnMr”号fMt不Iroot三2nytnfttat卞rtngr叩(基本型参数:匹配行首$匹配行尾.匹配单字符*在正则表达式中表示匹配=O个前面出现的字符.而在bash中*表示=0个任意字符U里面可以写很多.但是值匹配一个.如果都找到呢.就都输出来转义符.如、S表示以结尾grep-V12:sharcMatc在/Jiharbdatc中找不含12的行.只要有12的行就不显示。但是grep八2】YsharM1.ate表
6、示非2的的都可以显示,如果这一行的内容只有23,那么3是符合条件的,仍然显示这一行。区别很微妙,操作一下就明白了殁空行八.5只有3个字符的行,*$匹配行中任意字符产用的非常多的.匹配任意个任意种类的字符(即=()个.比如找到am和bin之间有任意多个任意字符时,用am.bm:可以找到找到ainbm.amhbm,amfsbm总之am与bm之间有=0个字符就是了。另外am和bm之间有任意多个字符。时.用amo*bm,(不是amo.*bm哦,可以找到ambm.amobm.amoobm,amooobn如果是在h和g之间有至少2个。呢,就是100o*g找到hoog,hxxg,fbooog有点小啰嗦-i不
7、区分大小写,如-iFW就可以找到不区分大小写的theoab)既然功能相似就一起吧.这个表示匹配的次数.如果在h和g之间有2个。就是ho2g.如果至少2就是%o2g,如果是2到5个呢.就是ho25g啦IIiNn1.大写或小写i或n.但是UiMNn只能找到i和n.为什么.下图。I17:26:24rootMnyIngtao*JgrcpharctcstIJtbnbah2三bioII7:26:40rocKKunyingtoo*UrcpI11Xshrctcst1.!ibah2:/bin9:i1.O:nU:!12:XP9a-zA-Z非数字且非字母grep*120-3VshareZdate找含120或或122
8、或123,都存在呢,就都显示出来呗grep,AA1.2J7share.date查找开头不是12的行grepSstep,ftStep或stepgrep-E1.41591sharehes1.找134或159.用管道符号时必须加E.因为grep是基本型的.如果是延伸型的egrep就不用加E啦,所以只用grep1341597ShareJtest会找不到C但是为什么用CgrCP134I159/ShaPtCSt找到了.却没有行号和颜色呢,因为提前已经在Ybashrc设置好了a1.iasgrep=1grep-n-co1.or=auto,加入这条语句后执行source.bashrc重启终端生效.或者关掉终端再
9、打开。16:52:10rootofinyngtogrep1341133*hActct(!6:55:013:134root6cinytngtooItrcp-E,134I33,Bharetcst16;55:133:154rx)tf11o)inEtaoep-E134|159,/sharetetCgrCP(延伸性CgrCP是grep的延伸,它有更多的功能,主要表现在上面提到的管道符号上,另外还有一些如果想去掉以#开头的注释行和空白行,用基本型grep表示为grep_、,#,shareestgrep-V用延伸型的egrep表示为egrep-vIA$,S1.Jarejtest这样看区别很明显吧”go,.,
10、dg和d之间有。个或1个o.即gd或godgo+dg和d之间有=1个o.即god或good或goood,go*dg和d之间有=0个。.即gd或god或good或goood,go.dgo和d之间有=0个任意字符,即god或gohd或gostdg(oo1.ad找good或g1.ad,注意grep中用(.而grep用A(xyz+W,找开头是A结尾是W,中间有=1个字符串xyz,如xyz,XyzXyZ例如执行CCho,AxyzxyzxjrzxyzV,egrep1A(xyzW,Sed:查找工具.查找或替换一个文件中的指定行是面向行的操作,但是用字符串替换命令却可以直接对行中的字符串替换.(如果就爱了个指
11、定字符串替换为空就糊掉了所以Sed可以插入.删除行.也可以插入,删除字符串。但是不会对原文件修改.只是将结果检出参数:a在指定行的后面插入一行i在指定行的前面插入一行(如果插入几行呢,就在各行之间用换行符Xnd删除指定的一行或几行P在屏常列出指定的一行或几行,常与-n配合使用C面向行的操作,替代一行或几行(将几行替代为一行或将一行替代为几行都可以SedNthi朝hat替换字符串命令将this替换为Iha1.是面向指定行中的指定字符串的操作。有了它Sed变得更强大了.它将sed的行操作扩展到行中的字符串.可以插入、替换或删除字符串,和vim中命令行模式下的SSm1.iSthatg类似,但是更好用
12、。-i直接修改文档内容而不输出,慎用。如:Wd-i八!信可将每行末尾的.替换为!(和!都加了转义符。注意这个-i和上面的i有所不同。例子:下面的4个小技巧是在文档sed.txt中操作的:Sed2,Sdsed.txt删除第二行到最后一行SedSd,sed.txt删除最后一行如果有一行内容为aisb那么怎么来插入和删除呢Sed,sisisfro11Vg,就插入了from了变成aisfrombSed*ig就删除is了.变成abQjn1.etcpasswdSed,2ahe1.1.1.onjim,将he1.1.o和jim两行插入到第二行的后面.注意he1.1.1.o和jim之间加了换行符H哦12:54:
13、10rootvnyingtao)n1.etcpass*dSed2ahe1.1Io11JteIroot:x:0:0:rootr/root!btn/bath-2btn:x!1:1!bin!/bini/sbin/no1.otnhe1.1.1.o3daeaon:x:2:2:dMBon:/sbin:/sbin/!X)1.oein将a替换为i就是插入到第二行的前面12:54:10root三inyingtao*1.n1./etcpass*dsed2ahe1.1.1.o11Jia1root:x:0:0:roott/root:btnhh-2btn:x:1:1!btnsbntbin/no1.ogtnhe1.1.1
14、.oetcpasswdSed,2.5d,删除2.3.4.5行n1.etcpasswdSed-n,5,7p在屏幕输出5.6.7行,与-n一起用112:54:10rooKninyingtaon1./etc/passwdSed2ahe1.1.IonJia1 root:x:0:0:root:/root:bn/bath-2 btn!I:1.tbin:/bint/sbin/no1.o(inhe1.1.IonI/etc,PaSSWdSCd2,30chc1.1.1.o5jim将2到30行换为hc1.1.1.o和jim两行12:53:56rootningtaon1.etcpaBsdsod*2t30che1.1.
15、1.onIroot:x:0:OirOOt:/roQt:/b,/bashhc1.1.1.oJiB31apochc:x:48:48:pcchejv*wwjsbnr1.Ogtn32distcche:DiStCXhe:/:tHno1.ogin/SbiiVifconfigCthOgrcp,inctaddr可找到含inctaddr:的行。bin,ifcongethgrep,inetaddr,Wd,.*addrg,sed,S1.Bcast.*Sg先将adirgtAon1.etcpasdSed,2,30che1.1.1.onIrt三x三0三0三root三root三nboshhc1.1.1.oJ1.B31epa
16、chc;UH;48:pecharm:stHn111.cincatetc,nan.configgrepMANSed,s.gseds/W/g,用grep找到含MAN的行.再在其中将以#开头的注释行换为空行.再将空行删除.(注意是换为空行,所以原来的注祥行蛋然内容没有了,但是行还在,也就是出现了许多空行,所以后面才删除空行其中以#开头的注释行除了用M产表示,也可以用#产$表7Fo12:53:56rootninyirgtMn1.ctcpa!dSed*2,30che!11.onIroo1.:x:0:0:no1.:/rgt:/n/ba5h上面的方法虽然能涉及更多的知识点.却很繁琐.不如直接将以#开头的注释
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2024 shell 高级 编程 经典 教程
![提示](https://www.desk33.com/images/bang_tan.gif)
链接地址:https://www.desk33.com/p-1647816.html