首先,已经掌握一定的基础命令,如最简单的lsmkdircptouch,cat,还有一些网络的命令,如最简单的ifconfig 等等,这些都要先掌握


首先大家要懂得chmod +x abc.sh这命令的意思,估计都知道了,就是给予该脚本文件有x权限,然后执行时就直接./abc.sh就行,因为后面我就不这么写了,以免大家误会我没给予x权限也能打开脚本。

vim命令,vivim其实区别不大,如果硬要说有什么区别,vi没颜色,vim有颜色,就是参数选项会变色,所以建议一般都用vim进行对脚本编辑。
vim一些简单的操作,原理就不多说了,这些可以看书


a i o O 都是插入,常用是ai,自己可以看看区别,就是光标插入到文本模式就可以输入文字了。
:为命令模式,当输入:后就可以跟命令了,如显示行号是:set nu 30就会跳到30
wq退出保存,:q退出不保存:或/abcabc查找abcabc的关键字,按n可以跳到下一个关键字
120s/aaa/bbb/g 从第1行到20行把aaa关键字全部替换成bbb 1,$s/abc/bbb/g 从第1行到最后一行把abc关键字全部替换成bbb


然后在文本模式,即不是:和插入模式下,yy是复制一行,p是粘贴,dd是删除一行,3yy是复制3行,4dd是删除4行,dG从当前行到最后一行都删除,u为撤销上次操作,G跳到最后一行,gg跳回第一行(这个有点忘记了),大家常用的都是这样,还有个更厉害的:g/^#/d 把全文以#开头的内容都清除
vim就介绍到这里吧,其它方面可以再参考一些资料


正则表达式
正则表达式分为元字符和普通字符
普通字符如:a,b,c,d,e,1,2,3,4,5这些都属于普通字符
元字符如:^,%,*,[ ] ; 等都属于元字符


下面对一些元字符的解释
*为前一个普通字符的0次或多次重复
如: hel*o , ab* 结果可以为helo, hello, hellllo, ab, abb, abbbb,重复出现0次或多次


. 用于匹配任意一个字符
如:ab. cc. 12. 结果可以为abx cc1 12a


^(上尖号) 匹配行首
^abc 匹配以abc开头的字符


$ 匹配行尾
abc$ 匹配以abc结尾的字符, ^$表示匹配空行


[ ] 匹配字符集合
如: [a-z] [0-9] [12548] 只属于该范围内匹配,但[^a-f]是表示取反,表示不匹配a-f的范围,这里的^跟元字符的意思不一样,是表示取反的意思,也可以[A-Za-z]* 匹配所有单词


\ 转义符,用于转义一个元字符
\$ 这样$就不表示为行尾,而只是一个$的普通字符,没有任何意义


\<\> 精确匹配符号
\<abc\> \<vim\> 能精确匹配abcvim这个单词


\{\} 表示前一个字符的重复性出现n
如:ab\{4\} leon\{5\} 前一个表示b重复4次匹配,后一个表示n重复5次匹配
ab\{4,\} 重复b至少出现4


ab\{3,7\}重复b出现3-7次,表示如abbbbbbb abbb abbbb abbbbbb,重复范围在3-7内匹配
例:精确匹配5个小写字母 [a-z]\{5\} 因为[a-z]是指1个字母的范围,而重复5次,则以这个范围的5个字母为匹配值

扩展正则表达式
匹配?符号之前的字符0次或1
如:le?n 结果可以为len leen


+ *相似,但符号可以匹配至少1
T+M,结果如TOM TAM TERRM 但就不能是TM


( )和|一般是结合使用,表示一组可选字符的集合
如:f(u|c)k 结果可以为fuk,fck 这种格式比较少用,多数用[ ]的匹配

ll [a-c]*.sh 列出a-c开头的.sh文件
ll [a-c]*.[^sh]* 列出a-c范围开头字母,不以sh结尾的文件

grep命令用于过滤
-i忽略大小写 -v表示反射过滤,即不过滤什么什么 -c匹配出结果的行数
grep支持多文件过滤,如grep "hello" abc.sh aaa.sh

通配符,跟正则表达的意思不一样,尽管字符有些相同
*代表任意字符,如ab*,结果可以为ab1 ab334 abdfasdf


?表示任意一个字符,如win? 结果可以为wind, wink,wins

一般使用正则表达式是需要通过工具grep, awk, sed来支持

多文件的过滤
grep ^winner *.sh 所有.sh的文件包含开头winner字符的行
如要查询abc.sh文件中有多少行含有hello的字符
grep -c "hello" abc.sh
grep的常用方法就是过滤,grep 加内容加文件名,一般都这种格式,如要过滤扩展正则表达式,则要用egrep工具
正则字符的表示就写到这,因为正则表达式是个很庞大的内容,要深入学习需要买相关的材料