教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高等教育 >

shell高级编程经典教程

来源:网络收集 时间:2026-08-24
导读: 学习sehll高级编程的绝好文档,由浅入深,内容详细,而且有大量经典例题...... 非正常退出时的文件恢复: 1.非正常退出后再次登录执行vim /test时,会出现这样的界面提示: 2.执行vim -r test后再次执行vim /test时,出现下面的提示界面: 3.未删除.test.swp文

学习sehll高级编程的绝好文档,由浅入深,内容详细,而且有大量经典例题......

非正常退出时的文件恢复:

1.非正常退出后再次登录执行vim /test时,会出现这样的界面提示:

2.执行vim -r test后再次执行vim /test时,出现下面的提示界面:

3.未删除.test.swp文件时,即使恢复了文件仍然提示,恢复并删除才算完成:

学习sehll高级编程的绝好文档,由浅入深,内容详细,而且有大量经典例题......

环境变量:

学习sehll高级编程的绝好文档,由浅入深,内容详细,而且有大量经典例题......

grep(基本型) 参数: ^ 匹配行首 $ 匹配行尾 . 匹配单字符

* 在正则表达式中表示匹配 >= 0 个前面出现的字符,而在bash中*表示>=0个任意字符

[] 里面可以写很多,但是值匹配一个,如果都找到呢,就都输出来 \ 转义符,如 ’\.$’ 表示以 . 结尾

grep –v ‘12’ /share/date 在/share/date中找不含12的行,只要有12的行就不显示。但是grep ‘【^2】’ /share/date表示非2的的都可以显示,如果这一行的内容只有23,那么3是符合条件的,仍然显示这一行。区别很微妙,操作一下就明白了…… ^$空行

^…$只有3个字符的行 ^.*$匹配行中任意字符

.* 用的非常多的,匹配任意个任意种类的字符(即>=0个),比如找到am和bm之间有任意多个任意字符时,用’am.*bm’,可以找到找到ambm,amhbm,amfsbm,……总之am与bm之间有>=0个字符就是了。另外am和bm之间有任意多个字符o时,用’amo*bm’,(不是amo.*bm哦),可以找到ambm,amobm,amoobm,amooobm……如果是在h和g之间有至少2个o呢,就是’ hooo*g’,找到

学习sehll高级编程的绝好文档,由浅入深,内容详细,而且有大量经典例题......

hoog,hooog,foooog……有点小啰嗦~~~

-i 不区分大小写,如 -i ‘the’ 就可以找到不区分大小写的the o\{a,b\}既然功能相似就一起吧,这个表示匹配的次数,如果在h 和g之间有2个o就是 ’ho\{2\}g’,如果至少2就是 ’ho\{2,\}g’ , 如果是2到5个呢,就是’ho\{2,5\}g’ 啦……

[IiNn]大写或小写i或n,但是[Ii][Nn]只能找到i和n,为什么,下图。

[^0-9a-zA-Z] 非数字且非字母

grep ‘12[0-3]’ /share/date 找含120或121或122或123,都存在呢,就都显示出来呗~~~

grep ‘^[^12]’ /share/date 查找开头不是12的行 grep ‘[Ss]tep’ 找Step或step

grep –E ‘134 | 159’ /share/test 找134或159,用管道符号时必须加 –E ,因为grep是基本型的,如果是延伸型的egrep就不用加 -E啦,所以只用grep ‘134 | 159’ /share/test会找不到。但是为什么用egrep ‘134 | 159’ /share/test找到了,却没有行号和颜色呢,因为提前已经在~/.bashrc设置好了alias grep = ‘ grep -n --color=auto ’ ,加入这条语句后执行source ~/.bashrc重启终端生效,或者关掉终端再打开。

学习sehll高级编程的绝好文档,由浅入深,内容详细,而且有大量经典例题......

egrep(延伸性)

egrep是grep的延伸,它有更多的功能,主要表现在上面提到的管道符号上,另外还有一些……

如果想去掉以#开头的注释行和空白行,用基本型grep表示为 grep –v ‘^#’ /share/test | grep –v ‘^$’ 用延伸型的egrep表示为 egrep -v ‘^#|^$’ /share/test 这样看区别很明显吧!!!

‘go?d’ g和d之间有0个或1个o,即gd或god

‘go+d’ g和d之间有 >=1个o,即god或good或goood…… ‘go*d’ g和d之间有 >=0个o,即gd或god或good或goood…… ‘go.*d’ go和d之间有 >=0个任意字符,即god或gohd或gostd…… ‘g(oo|la)d’ 找good或glad,注意grep中用(),而grep用[] ‘A(xyz)+W’ 找开头是A结尾是W,中间有>=1个字符串xyz,如xyz,xyzxyz……例如执行echo ‘AxyzxyzxyzxyzW’ |egrep ‘A(xyz)+W’

学习sehll高级编程的绝好文档,由浅入深,内容详细,而且有大量经典例题......

Sed: 查找工具,查找或替换一个文件中的指定行,是面向行的操作,但是用字符串替换命令却可以直接对行中的字符串替换,(如果就爱了个指定字符串替换为空就删掉了)所以sed可以插入,删除行,也可以插入,删除字符串。但是不会对原文件修改,只是将结果输出 参数:

a 在指定行的后面插入一行 i 在指定行的前面插入一行

(如果插入几行呢,就在各行之间用换行符\n) d 删除指定的一行或几行

p 在屏幕列出指定的一行或几行,常与-n配合使用

c 面向行的操作,替代一行或几行 (将几行替代为一行或将一行替代为几行都可以)

sed ‘s/this/that/g’ 替换字符串命令 将this替换为that,是面向指定行中的指定字符串的操作。有了它sed变得更强大了,它将sed的行操作扩展到行中的字符串,可以插入、替换或删除字符串,和vim中命令行模式下的 :$s/this/that/g类似,但是更好用。

-i 直接修改文档内容而不输出,慎用。如:sed -i ‘s/ \.$ / \! /g’可将每行末尾的 . 替换为 !(.和!都加了转义符\) 。注意这个 -i和上面的i有所不同。 例子:

下面的4个小技巧是在文档sed.txt中操作的:

学习sehll高级编程的绝好文档,由浅入深,内容详细,而且有大量经典例题......

Sed ‘2,$d’ sed.txt 删除第二行到最后一行 Sed’$d’ sed.txt 删除最后一行

如果有一行内容为 a is b 那么怎么来插入和删除呢 Sed ‘s/is/is from/g’ 就插入了from了 变成a is from b Sed ‘s/is//g’ 就删除is了,变成 a b ① nl /etc/passwd | sed ‘2a helllo \n jim’

将hello 和jim两行插入到第二行的后面,注意helllo和jim之间加了换行符 \n哦

② 将a替换为i就是插入到第二行的前面

③ nl /etc/passwd |sed ‘2,5 d’ 删除2,3,4,5行

④ nl /etc/passwd | sed -n ‘5,7 p’ 在屏幕输出5,6,7行,与-

-n一起用

⑤ nl /etc/passwd | sed ‘ 2,30c helllo \n jim’ 将2到30行换为

helllo

学习sehll高级编程的绝好文档,由浅入深,内容详细,而且有大量经典例题......

和jim两行

⑥ /sbin/ifconfig eth0 | grep’inet addr’ 可找到含inet addr: 的行。 /sbin/ifconfig eth0 | grep’inet addr’ | sed ’s/^.*addr://g’ | sed ’s/Bcast.*$//g ’ 先将 addr: 及前面的内容换为空(即删除),再将Bcast后面的内容换为空(删除),结果呢,这一行就只剩192.168.0.10了,这就是替换的强大之处,如下图(如果将指定字符串替换为其他呢)

⑦ cat /etc/man.config | grep ‘MAN’ | sed ‘s/^#.*//g’ | sed’s/^$//g’用grep找到含MAN的行,再在其中将以#开头的注释行换为空行,再将空行删除。(注意是换为空行,所以原来的注释行虽然内容没有了,但是行还在,也就是出现了许多空行,所以后面才删除空行) 其中以#开头的注释行除了用^#.*表示,也可以用#.*$表示。

上面的方法虽然能涉及更多的知识点,却很繁琐,不如直接将以#开头的注释行删除,命令为:

cat /etc/man.config | grep ‘MAN …… 此处隐藏:4578字,全部文档内容请下载后查看。喜欢就下载吧 ……

shell高级编程经典教程.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1706383.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)