您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 43shell学习笔记
LINUX与UNIXSHELL编程指南第一章:文件安全与权限1)margin@linux:~/myfilelltotal4drwxr-xr-x2hsinfousers802009-08-2716:41acedrwxr-xr-x2marginusers3282009-12-0410:55bak-rw-r--r--1marginusers482009-12-0110:58my.txtdrwxr-xr-x2marginusers2082009-12-0410:57test2)文件类型d目录l符号连接(指向另一个文件)s套接字文件b块设备文件c字符设备文件p命名管道文件-普通文件(更准确的说,不属于以上几种类型的文件)3)权限更改命令$chmodu-x,g+r,o+rmy.txt$chmod644my.txtrwx对应421;最高权限777第二章:使用find和xargs1)find命令margin@linux:~/myfilefind.-typef-size+100000c-name*.rar-mtime+10-execls-l{}\;.代表当前目录;~代表$HOME目录;/代表根目录$find.–name“*.tar”–print在当前目录查找文件名以大写字母开头的文件:$find.–name“[A-Z]*”–print在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是*.txt的文件:$find.–name“[a-z][a-z][0-9][0-9].txt”–print在当前目录查找文件权限为755的文件,即文件主属可以读、写、执行,其它用户可以读、执行的文件,可以用:$find.–perm755–print按文件属主查找文件:find.–userhsinfo-printmargin@linux:~/myfilefind-userhsinfo-execls-l{}\;total8032-rwxr-xr-x1hsinfousers82159202009-08-2716:40libACE.so.5.5.0-rwxr-xr-x1hsinfousers82159202009-08-2716:40./ace/libACE.so.5.5.0在home下查找属主账户已经被删除的文件可以用:$find/home–nouser–print在当前目录下查找5天以内的文件$find.–mtime-5-print在当前目录下查找5天以前的文件$find.–mtime+5在当前目录下查找文件长度大于1M的文件,可以用:$find.–size+1000000c–print/////////c是以字节计量$find.-name[a-z]?[0-9]?[!0-9a-z]*2)exec和ok命令第三章:后台执行命令1)Crontab2)at命令3)&命令(使用它在后台运行一个占用时间不长的进程)看下例:18141是进程号margin@linux:~psx|grep181415280pts/0S+0:00grep181414)nohup命令第四章:文件名置换2)使用?号3)使用[…][!…]总结:margin@linux:~ls[a-z]?_*[0-9].[!0-9]*jr_sim20090823.tgzmargin@linux:~ls[a-z]?[!a-z,0-9][a-z]??[0-9]*.*[a-z]jr_sim20090823.tgz第五章:shell输入与输出1)echo\c不换行;\f进纸;\t跳格;\n换行margin@linux:~echoWhatisyourname?Whatisyourname?margin@linux:~echo-ehereisatab\thereistwotabs\tokhereisatabhereistwotabsok如果想输出引号,可以用反斜杠,如下:margin@linux:~echo\/home/margin\/home/margin把输出结果保存到名叫myfile的文件中:margin@linux:~/myfileechoGoodjob!myfilemargin@linux:~/myfilecatmyfileGoodjob把输出结果追加到名叫myfile的文件中:margin@linux:~/myfileechowhynot?myfilemargin@linux:~/myfilecatmyfileGoodjobwhynot?2)read例一:margin@linux:~/myfilereadvargoodjobgoodjobgoodjobmargin@linux:~/myfileecho$vargoodjobgoodjobgoodjob例二:margin@linux:~/myfilereadvar1var2goodjobgoodjobmargin@linux:~/myfileecho$var1goodmargin@linux:~/myfileecho$var2jobgoodjob3)cat4)管道5)tee6)标准输入、输出和错误7)文件重定向例一:margin@linux:~/myfile/testgrep'oo'c.txtoooooooooaaaaoooooooooooiiiiooooojji2jajaaaiiiooo下面把以上查找结果定向到dx文件中:margin@linux:~/myfile/testgrep'oo'c.txtdx查看dx文件内容:margin@linux:~/myfile/testcatdxoooooooooaaaaoooooooooooiiiiooooojji2jajaaaiiiooo把以下查找结果追加到dx中:margin@linux:~/myfile/testgrep'oo'c.txt|grep'jj'dxmargin@linux:~/myfile/testcatdxoooooooooaaaaoooooooooooiiiiooooojji2jajaaaiiioooooooojji2jajaaaiii第六章:命令执行顺序margin@linux:~/myfile/testgrep'jj'dx&&catc.txtmargin@linux:~/myfile/testgrep'jj'dx||catc.txt第七章:正则表达式介绍margin@linux:~/myfilecatmy.txt用touch命令创建的文件也可以用vi命令来创建ddd以上是my.txt的内容,在下面的例子中将用到。注意在my.txt中有一个空行。1)“.”可以匹配任意单字符(一个.代表一个字符)例:$grep.touch*my.txt用touch命令创建的文件$grep....vi.....my.txt也可以用vi命令来创建2)在行首以^匹配字符串或字符序列例:$grep^用my.txt用touch命令创建的文件$grep^用tomy.txt用touch命令创建的文件3)用$匹配行尾字符串或字符,和^正好相反。例:$grep文件$my.txt用touch命令创建的文件$grep^$my.txt注:以上结果是空行。4)使用*匹配字符串中的单字符或其重复序列例:5)使用\屏蔽一个特殊字符的含义6)用[]匹配一个范围或集合7)用\{\}匹配模式结果出现的次数8)例子第八章:grep家族#输出没有点的行$grep-v'\.'my.txt$grep-nv'ddd'my.txt第九章:AWK介绍1)AWK命令一般形式为:awk[-F域分隔符]‘命令’文件名[]为可选项,默认空格为域分隔符。如果文件中各列之间本来就是用空格分隔则可直接简化为:awk‘命令’文件名#显示出所有的列margin@linux:~/myfileawk'{print$0}'aa22.txtoooaaabbbcccdddeeefffgghhiillmm#将第一列输出到fff中margin@linux:~/myfileawk'{print$1}'aa22.txtfffmargin@linux:~/myfileawk'grep^o'aa22.txt2)3)如果第三列是fff则打印出来:(正则表达式要用斜线括起来,本例中/fff/)margin@linux:~/myfileawk'{if($3~/fff/)print$0}'aa22.txtdddeeefffgg下面的语句可以达到同样的效果margin@linux:~/myfileawk'$0~/fff/'aa22.txtdddeeefffgg如果第三列等于fff则打印:margin@linux:~/myfileawk'$3==fff{print$0}'aa22.txtdddeeefffgg如果第三列不等于fff则打印:margin@linux:~/myfileawk'$3!=fff{print$0}'aa22.txtoooaaabbbccchhiillmm如果第三列不匹配fff则打印:margin@linux:~/myfileawk'$3!~/fff/{print$0}'aa22.txtoooaaabbbccchhiillmmhhmargin@linux:~/myfileawk'/^hh/'aa22.txthhiillmm4)如果第一列匹配hh并且第二列等于ii则打印:(注意大括号范围)margin@linux:~/myfileawk'{if($1~/hh/&&$2==ii)print$0}'aa22.txthhiillmm如果第一列匹配hh或者第三列匹配fff则打印:(注意大括号范围)margin@linux:~/myfileawk'{if($1~/hh/||$3~/fff/)print$0}'aa22.txtdddeeefffgghhiillmm$awk'END{printNR}'aa22.txt5margin@linux:~/myfileawk'{printNF}'aa22.txt40440$awk'END{printNR,NF}'aa22.txt$echo8899|awk'{printf%c%c\n,$1,$2}'Xc第十章:sed用法介绍打印第二行$sed'2p'aa22.txtoooaaabbbcccdddeeefffgghhiillmm$sed-n'2p'aa22.txt打印第三行margin@linux:~/myfilesed-n'3p'aa22.txtdddeeefffgg打印3-4行margin@linux:~/myfilesed-n'3,4p'aa22.txtdddeeefffgghhiillmm打印匹配行margin@linux:~/myfilesed-n'/gg/'paa22.txtdddeeefffgg打印一到最后一行$sed-n'1,$p'aa22.txt第十一章:合并与分割$sortaa22.txt显示结果未分类#逆序分类:$sort-raa22.txtdddd0ud1uddiddycccc.cc.6c.88c.99bbbbb2bb3bb4bb5aab12q3ccbbcccdaaaaa2aa3aa4aa5#对第二列进行排序$sort+1nhlili22dongdong33zhanghua88xiaoming98piaopiao100使用K进行排列margin@linux:~/myfilesort-r-k2hxiaoming98zhanghua88dongdong33lili22piaopiao100使用K进行排列margin@linux:~/myfilesort-k2h例:这里有两个文件h和w;它们的内容分别为$cathxiaoming98zhanghua88piaopiao100lili22dongdong33lili22lili22$catwxiaoming1zhanghua2piaopiao3lili1dongdong3lili2lili2现在将w和h
本文标题:43shell学习笔记
链接地址:https://www.777doc.com/doc-5905218 .html