从零开始的linux 第十六章

路人乙:“啊,小编你越来越过分了,这次居然推迟了一天才来!!”

(嬉皮笑脸)嘻嘻~~抱歉啦同学们,小编昨天因为做LNMP以及负载均衡的DR工作模式的时候出了点小问题,原理部分与小编理解的有点误差~~不过小编这么厉害肯定是已经解决啦~~

那么,虽然迟到了一天,今天小编打算加班,嗯,没错~~小编这次会把上一章因为紧急事态遗留的问题和这章的内容一起讲~

唉??什么?你说为什么上一章不推迟一天?这个嘛,因为小编是很守时的~~就算讲的内容少,也要坚决在周六更新~~怎么可能会推迟一天党务大家学习呢~~

(教室中的声音):“胡说八道!!明明每次给我们讲课都迟到!而且这次就推迟了一天更新!!”

......

(小编面带微笑地背对着这名正在被保安拖出教室的学生)

(面带微笑)那么~同学们还有什么问题吗~~小编都会给同学们解答的哦~~

(↑同学们):“没有了~小编说什么都是对的~~”

很好,那小编就开始讲课啦~~

上一章,因为紧急事态,小编的内容有点少,补充了一下第十四章的内容~shutdown的定时关机或重启的广播,以及rm删除文件的一些选项和简单用法~这章小编接着上一章遗留下来的部分给同学们介绍一下为什么rm是一个危险的命令~~

上次小编跟同学们说,可以用 -f 选项来强制删除,-r 可以删除目录,那么,在删除普通文件的时候用 -r 依然是不会报错的~

需要确认删除,是因为系统默认加了一个别名 rm = "rm -i" 至于别名的用法,小编在很久以前跟同学们讲过,相信不用再做什么过多的介绍了~~不过,关于别名,小编在这里还是要补充一下,至于当存在命令别名的时候,但我们不想用这个别名的功能,而想用这个命令本身的功能什么办呢??可以在命令前面加上"\"反斜杠,可以让这个别名不生效,而使用这个命令本身的功能

以上,rm 命令的用法是非常简单的,而对于这个命令,常用的组合选项就是 -rf,也就是 -r -f 两个选项一起使用,因为要删除的既有普通文件,又有目录文件,-f 强制删除也可以省去很多麻烦。

删除文件的时候没有任何的提示信息,那我是不是可以删除"/"目录呢~~学了文件系统,同学们应该明白删除"/"意味着什么~那小编就来试试~~

很遗憾是不会让你删除的~~这是因为之前很多运维工作者都因为这个而吃尽苦头呢~~什么??你说让我进到"/"目录下再试试??

哼哼,没有用的~~为什么之前的运维工作者会产生这种悲剧呢~~当然是误操作啦~rm -rf 这个命令删除时可不会有任何的提示信息,并且立即删除的~~至于为什么会误操作,小编给同学们举个栗子~~

比如小编现在在家目录下,要删除一个在/app/目录下的zzc文件

因为手快,把目录给打错了,这时候手快按Backspace键返回操作

直到返回到这个位置,还没来得及输入正确的目录,返回键与回车键中间间隔比较近,然后手快“啪叽”按了一下回车。

美好的日常生活就这么结束~~赶紧背上行李箱,慌忙的跑路....

不过这种事情是不会发生在同学们身上的~~现在已经不能直接删除咯~~听过之前的版本是可以直接删除的~~现在呢,要删除的话需要在根后面加上一个通配符~~

比如像这样,然后“啪叽”按一下回车

.....小编已经按了回车.....

..没..没关系,没有执行过 rm -rf /* 的运维工程师不是好工程师。

不过,同学们看小编的截图上的内容,似乎提示的是没有删除,但是请仔细目录,小编的截图中是/proc/目录下的文件。而真实的情况是...系统已经不可用了

大部分命令都已经不能用了~~咦??cat 命令还能使用,不过这个命令也就相当于不能用,因为,现在系统中的所有文件,都已经被删除了~~那小编现在重启一下,应该就不行了

啊~~连 reboot 重启命令都不行惹~~那就只有拔电源啦~~

启动不起来呢~~不仅仅是少了截图上的这个东西,而是所有系统中的东西,启动需要依赖的东西都会没有惹~~~

所以这个命令是很危险的,虽然删除根目录可能不太现实,因为就算误操作,也不会多输入一个"*",但是系统中的文件,以及库文件~~同学们可要小心点哦~~

那么,以上就是上一章遗留的内容,上面小编提到了一个概念叫“通配符”,并且在删除根的时候也用到了,通配符是什么呢?小编下面就给同学们介绍一下通配符

在linux中,有时候我们要去寻找一个文件,或者对一类文件做一些操作,当我们要寻找一个文件的时候,忘记了这些文件的名称,但知道这个文件名的部分名称,而根据我们已知的部分模糊的查询文件名中包含我们已知的字符的文件,这个操作就叫"模糊匹配"。所用到的匹配的符号,就叫"通配符"

而通配符也是有多种风格,我们经常使用的是"glob风格"的通配符,这些通配符为:

*:匹配0或多个字符

不知道我们不知道文件,但只知道目录时,可以用这种方法列出指定目录下的所有内容,但是这个目录下的子目录中的内容也会被显示出来,这是"*"最简单的用法,当然,它既然是匹配0个或多个字符的,小编是不是可以在文件名的前面或后面加,表示以指定字符开头或指定字符结尾的呢?

小编创建的以A开头的文件是一个目录,使用这种方法,会把所有以A开头的文件列出,但所有以A开头的目录会显示其目录下面的内容

这种用法,可以表示任何以wa结尾的文件

注意哦~小编说的是通配符是可以匹配字符的,不仅仅是能匹配文件名!

?:匹配任意一个单一字符

上面的*是可以匹配任何长度的字符,但 ? 只能匹配一个字符

以上两个仅能匹配连续的字符,若是不连续,且不知道顺序,这时候就需要用到范围匹配

[]:匹配指定范围内的单个字符

将要匹配的范围写在[]中,不需要隔开,隔开也无所谓啦~但是!要用","隔开

[0-9]:匹配数字范围,范围是0-9

匹配以 a 字符开头,后面是 0-9 任何一个数字的字符

这个意思就是,以 23 字符开头,后面是0-9中任何数字,并匹配0次或多次。

匹配以 a 字符开头,后面是一个0-9中任何一个数字,再后面是任何一个字符的字符

  [a-z]:匹配字母范围,范围是[a-z],不区分大小写

这个用法和上面的范围一样,小编就不再做演示了

  [A-Z]:匹配字母范围,范围是[A-Z],区分大小写

这个根据小编说的意思就可以知道区别啦~~小编也不做演示了

那么,根据以上两个的示例,匹配包含 mnl 字符要怎么做呢?路人甲回答~~

路人甲:“唉??内个...在 mnl 字符的前面和后面加上*”

没错~~看来路人甲同学有认真听课呢~~相比那边的男生们可真是强太多了

路人丁:“哇~~小编大人,我和路人丙也有好好听课的,你只是,没有提问我们而已”

那好吧,路人甲已经说出来解题的思路咯,你们就来操作一下吧

(↑路人丙的做法)

(↑路人丁的做法)

(↑突然暴躁)你们两个笨蛋没有听题吗!!还说有好好听课!!小编说的是包含mnl字符!!你们两个写的是以 m 或 n 或 l 开头的所有字符!!

↑这才是小编那道题的正确做法哦~~路人丙和路人丁的做法是另一种含义~~

  [[:upper:]]:匹配任意大写字母

这种用法,小编先解释一下,两个[]的意思,最外层的[]才是范围匹配用到的[],而里面的[]号则是固定的格式,是这个通配符自带的

前面是大写字母,后面是一个字母不区分大小写,再后面是任意字符。小编这是举个栗子,而这个通配符,实际上是可以换成 [A-Z] 的,这些用法,同学们可在不同的场景下选择使用不同的通配符

 [[:lower:]]:匹配任意小写字母

用法与上面一样,小编就不做过多的演示了

 [[:alpha:]]:匹配所有字母,不区分大小写

 [[:digit:]]:匹配所有数字

 [[:alnum:]]:匹配所有字母和数字

这个要注意,匹配的是所有字母和数字,字母是不区分大小写的,与"*"通配符不相同,*通配符是会将所有字符都匹配到,而这个字符不一定会是字母或数字,有可能是特殊符号,所以有时候要匹配所有字母和数字,使用这个通配符更为准确。

很明显,c> 文件带有特殊字母

路人甲:“小编大人,我怎么创建不了带特殊符号的文件?”

同学们不要急嘛~~特殊符号是有特殊含义的,有些情况要是用这些符号,不想使其带有特殊含义,需要将这些特殊符号转译,至于如何操作,小编以后给同学们介绍。

 [[:space:]]:匹配所有(水平或垂直)空白字符

这个通配符也是很有用处的一个,但是小编现在一直都在一起文件名方式给同学们演示这些匹配如何操作,是因为匹配文件中的内容需要用到的管道以及文本过滤的命令还没有给同学们讲到,在匹配文件中的内容,对文件内容过滤时是很有用的。

水平字符就相当于同学们平时使用的空格,以及TAB键所产生的字符,空格也是占一个字符的~~

垂直字符则相当于回车键

这个用法与上面都相同,所以就不再演示了

 [[:blank:]]:匹配水平空白字符

对于什么是水平字符,小编上面已经说过,用法同样与上面相同,在文本内容过滤中也是有很大作用,但相对于[[:space:]]通配符来说,所匹配的空白字符的范围较小

 [[:punct:]]:匹配所有标点符号

这个通配符相对于以上的一些通配符来说,就显得不那么重要,用到的地方并不多,反正小编到现在还没有用到过这个通配符

 [[:print:]]:匹配可打印字符

这个可打印字符,小编还是演示一下跟同学们解释

所谓可打印字符,就是所有可以输出的字符,所有可以看得见的字符,这个感觉就相当于"*"通配符一样,同样,小编到现在还没有使用过,包括下面的两,同学们了解一下就好。

 [[:cntrl:]]:控制(非打印)

对于这个,小编也不是很理解其中的意思,没有用到过这个,包括下面的,同学们了解一下就好(吐槽:这不靠谱的小编!!)

[[:graph:]]:匹配图形字符

 [[:xdigit:]]:十六进制字符

上面这些就是glob风格的文件通配符,注意咯:这些通配符不仅仅只是用来匹配文件名的,文件中的内容也可以用这种方法匹配,不要仅仅局限于小编举的这些例子哦~这些通配符都是可以组合起来使用

虽然很想继续和大家讲~但是同学们要熟练的掌握通配符可能也需要时间呢~~所以小编这次就到这里吧~~

The END

时间: 2024-08-04 11:09:03

从零开始的linux 第十六章的相关文章

从零开始的linux 第十九章(mv命令详解)

从零开始的linux 第十九章 hello~~又到了一周一更新博客的时候啦~~这周51CTO成功将博客功能升级~~给我们带来了全新的体验~全新的界面~全新的视感~~不过,在编辑器上~小编还是习惯用原来的编辑器,感谢工作人员在内测时候广泛采纳用户的建议~对博客进行一次又一次的修改,嗯,最辛苦的还是我们的开发同志~~小编给你们以及所有员工打call~~ 那么,回归到这章内容,实际上,小编从这周是想拒绝更新的~~因为这么久过去了,小编虽然在一直给同学们讲课,但自己还没有写一篇有技术性的博客,但小编又没

C Primer Plus (第五版) 第十六章 C预处理器和C库 编程练习

第十六章 C预处理器和C库 开发一个包含您需要使用的预处理器定义的头文件 //max.h  #ifndef _MAX_H_     #define _MAX_H_     #define MAX(X, Y) ((X)>(Y)?(X):(Y)) #endif 2.两个数的调和平均数可用如下方法得到:首先对两数的倒数取平均值,最后再取倒数.使用#define指令定义一个宏"函数"执行这个运算.编写一个简单的程序测试该宏. #include <stdio.h> #defin

CSS3秘笈复习:十三章&amp;十四章&amp;十五章&amp;十六章&amp;十七章

第十三章 1.在使用浮动时,源代码的顺序非常重要.浮动元素的HTML必须处在要包围它的元素的HTML之前. 2.清楚浮动: (1).在外围div的底部添加一个清除元素:clear属性可以防止元素包围浮动元素.关键字:left.right或both. (2).浮动外围元素:让包含浮动元素的<div>也浮动.选择这种方法一定要在浮动容器后面的任何元素中添加一个clear属性,确保浮动元素落到容器的下方. (3).利用overflow : hidden.另一种常见的方法是在外围的样式中添加以下属性:

第十六章 多态性

相同函数名具有多态性: ①  译时的多态(由函数名来调用时体现):重载:同类,不同参 ②  运行时的多态(用指向不同类的指针来调用): 覆盖:  不同类,同参,基类有virtual(由指针的类型来决定,体现了多态性) 隐藏:①不同类,同参,基类无virtual②不同类,不同参(不论有无virtual)(由指针来决定,不能体现多态性) 1.  为什么要使用多重继承 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数.C++多态性是通过虚函数(virtual)来实现的. 2.

《Java并发编程实战》第十六章 Java内存模型 读书笔记

Java内存模型是保障多线程安全的根基,这里仅仅是认识型的理解总结并未深入研究. 一.什么是内存模型,为什么需要它 Java内存模型(Java Memory Model)并发相关的安全发布,同步策略的规范.一致性等都来自于JMM. 1 平台的内存模型 在架构定义的内存模型中将告诉应用程序可以从内存系统中获得怎样的保证,此外还定义了一些特殊的指令(称为内存栅栏或栅栏),当需要共享数据时,这些指令就能实现额外的存储协调保证. JVM通过在适当的位置上插入内存栅栏来屏蔽在JVM与底层平台内存模型之间的

攻城狮在路上(叁)Linux(十六)--- 命令与文件的查找

一.脚本文件的查询: 1.命令格式:which [-a] command; <==通过PATH来查找. -a:列出所有的,而不是仅列出第一个. 示例: which ifconfig; 注意:由于不同的用户PATH不同,所以结果或许也有区别. 二.文件名的查找: 1.whereis [-bmsu] 文件或目录名  <==通过数据库来查找,所以不同的用户查到的结果是一致的. 参数说明: -b:只找二进制格式的文件. -m:只找在说明文件manual路径下的文件. -s:只找source源文件. -

Gradle 1.12 翻译——第十六章. 使用文件

有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com/1.12/userguide/userguide.html 本文原创,转载请注明出处:http://blog.csdn.net/maosidiaoxian/article/details/41113353 关于我对Gradle的翻译,以Github上的项目及http://gradledoc.qin

Gradle 1.12用户指南翻译——第三十六章. Sonar Runner 插件

本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个

《构建之法》第十六章读后感更正

第十六章IT行业的创新 1.关于灵感.灵光闪现固然重要,很多伟大的发明依靠的就是灵光一现的基础,但是灵光闪现的前提是个人的思考,长时间的思考.完成这一灵光的基础是不断的尝试,提高自己的技术.这样才会将自己的灵光变成一个实物而不是空想. 2.关于喜好.并不是人人都喜欢创新,因为创新本来就是个长耗时又难以被认可的东西.创新有需要考虑的因素有许多,个人.面子.优先级等等,现在人们更多的是支持在原有材料技术上的"线性发展"--扩充功能等. 3.关于想法.人们接受的并不是好的想法而是他们所需要的