00:00
好了,那我们前面呢,学习share的时候啊,这个在登录之后,咱们执行的各种命令啊,包括还有些环境的信息,比方说别名啊,比方说一些环境变量,那我们进行设置的时候,往往会涉及到一些配置文件的更改,那接下来呢,咱们就来做一下总结啊。呃,这些配置文件到底是干嘛用的,它的生肖次序是怎么做的,这个呢,我们可以通过。这部分内容大家来了解一下咱们,但是这个是一个share类型,这个share类型用户在登录的时候,它会自动开启share。啊,我们每个用户都有一个默认share这个地方呢,我们可以通过get int b那就可以看到,你看这些账号都有一个默认的share类型,我们发现现在默认都用的是BA share。
01:06
那这些办事就意味着当用户只要一登录,它就会自动的去运行。办事啊运行办事,嗯,那这个运行办事的时候,那我们可以通过这种方式来实现账户的这个所谓的一个切换啊,这个切换有一个命令叫Su,这个Su切换用户,它可以临时切换身份啊,你像我切换成王,我就可以不用在这儿非得重新登录了,这个Su切换呢,啊后面可以跟用户名。这跟上一个用户名啊,我们不需要非得换用户的时候通过Su。这种传统的登录方式来登录啊,我不需要在这儿非得在这样输入,我们就可以在登录之后用临时切换身份,那么切换身份的时候,那么实际上它也会开启C尔啊,比方说我现在先看一下当前的C尔,它的进程数关系啊,大家看这边有一个进程数关系,那我们看到目前有一个share,就是这个大share。
02:19
别的没有大线了,那这个进程呢,是2694好了,那现在我们切换一下,我切换成王,注意我呢后面跟一个用户名,他就可以切换成王的身份了,大家看这边已经变了王的身份,而且切换过来以后呢,发现它原来的目录并没有变化,我们现在还是在哪呢?还是在这个刚才的这个用户的目录里,那么这个切换我们叫非完全切换啊,为什么叫非完全切换呢?因为它还残留了旧的信息,只是说账户的身份切过来了,那怎么知道呢?ID可以看,你看我的账号是不是切过来了,但是呢,仍然还保留了旧的信息。
03:00
这就叫不完全切换啊,那当然还有一种叫完全切换,完全切换呢是加一个横线。加一个横线,加横线呢,这就是完全切换,那我们可以用这种方式,可以彻底的就有点儿像咱们重新登录一样,大家看你看我现在是不是都跟个重新登录一样的感觉,在自己的加录里面,而且切换过来以后,它的环境也都切过来了,比方说我们的看变量,你看用的就是自己的变量环境,你看,那如果我们用不完全切换,加一个不加这个减号,不加这个减号就不就是不完全切换,你看现在呢,我们看到的这个环境,它用的是谁的环境呢?是不是用的就是。呃,王的环境,但是有没有保留了褥子的环境?有是不是也就是说它残留了旧用户的信息,所以这就叫不完全切换,明白了吧,那但是不管怎么样,它都有开启了线,大家看我们这儿原来是这个C,后来。
04:06
用Su切换以后,又开了一个新的线R,只要用户一登录,它就会开启一个新C,对吧?那这个share呢,每个share它都有自己的一个初始化配置文件,都有一些相关的初始化配置文件,那这种初始化配置文件呢,我们对应的来看一看有哪些和线相关的配置文件,也就是说只要用户一登录,它就会开启BA,那么一开BA它就会自动的去读一些配置文件来影响咱们的环境,比方说pass这个环境,Pass这个变量,实际上它就是在咱们的share登录的时候做的初始化。那这些变量从哪来的?实际上就是来来自于我们大的配置文件,那这个配置文件有好几个,比方说我们可以从它的生肖范围分成两类,一类呢叫全局,一类叫个人。所谓全局就是不论谁。
05:02
只要你这个用户一登录,它都影响你,那么这些全局配置放在哪呢?ETC放在ETC下的这些分别的目录里。那当然也有只影响个别人的,那影响个别人的就是放在这个人的家目录里面啊,放在家目录里面的文件就是只影响这个人啊,你比方说放在王的项目里面,那这个配置就只影响王,不影响别人,他是这个意思,所以它的配置文件呢,可以分成两类。那么另外一类呢,就是叫它的登录方式,登录方式呢有交互式登录,还有一种叫非交互式登录,什么叫交互式登录呢?交互登录就是比方说我们拿这个终端直接用户账号密码这种登录啊,比方说就是比较大家经常看到的拿这个终端在这。直接在这输入用户名密码,这么登录,这就是交互登录的第一种表示形式,那么还有一种方式呢,就是完全切换带横线这种。
06:04
带横线这种咱们也是交互登录,它都需要输入用户名密码啊啊,那么在这种交互登录下,它会自动的把咱们的。这些。配置文件按照顺序执行。啊,按照顺序执行,就是把你如果你想将来知道它的执行顺序,怎么知道,那你可以把自己写的一个文件,写的一个命令,你放在这些文件的前面。啊,放在这些文件的前面,那么将来你能看到它的执行结果是这样的结果。那如果你把一个命令放在了这些每一个文件的后面,最后它的经营结果就这样。所以你把命令放在每个文件的前和后,它最终看到的结果次序并不相同啊,什么意思啊,最终我们要主要做个实验啊,做实验比方说我们就放在这ETC profile fair啊,在这我们把它放到最后,比方说我们就写一个pro啊,就打一个Apple。
07:14
然后呢,我在另外一个地方叫,比方说82C,在这也加一个东西啊,叫AO波朗普点22C,哎,大家想这两个文件我都改了,那改了以后这两个文件它都属于系统的配置文件,那么当我们登录的时候,它将。谁先执行谁后执行,你看看就知道了,看到了吗?是不是就看出在次序来了,是不是ETC先执行入下的加入有一个82C是后执行,对不对后执行啊。啊,当然这个和你放在哪个地方有关啊,和你放在哪个地方,我们说你写的命令放在文件的前面和放在后面,它并不是完全一样的啊,那这个地方你看你放在这个80RC和这个profile里面,它就这个结果是啊不一样的啊,不一样的,那我们可以来自己测一下啊,比方说来这样。
08:18
这怎么是个点?ETC。这写错了吧?应该是斜杠吧啊。然后接着我们看,如果我们把一个文命令放在80C里面,又放在profile里面。那如果我们放在前和放在后,它的执行次序不相同,那我们来试一试,比方说ETC发RC,我给它放在最前面,那就是放在这儿。EETC82C。然后再把ETC和刚才写的那一行给它切到最前面去。
09:08
放在这最前面了,哎,那这时候那我们再来登录一下,看看他们的执行次序啊,大家看。Profile先执行80C,执行了两次,大家注意到吗?哎,执行了两次,那也就是说如果你放在最前面,Profile是先执行的,82C是后执行的啊,你看我这个地方是不是就记录下来了,这个是profile先执行82C,执行了两次啊,执行了两次,执行两次,哎,当然中间因为我没写啊,所以这些呢就没有看到。哎,那如果你放到最后这就不一样了,那你看我们现在ETC profile22C吧,啊,把这段代码切到最下面去,然后放到最下面,然后再把profile这段代码切到整个命令的最下面,然后这时候你再重新登录一下,发现80AC又先执行了,Profile又执行,然后8C又执行了一遍,发现了吗?这时候如果你这样说,那你说谁在前谁在后啊。
10:12
是不是就根据你放在哪决定了,所以经常有一些资料说是,哎,先执行谁后执行谁,那实际上和你的代码放在哪有关系。明白了吧,你放在哪儿,它最终执行的效果是不一样的啊,这行效果不一样的啊,那不管怎么样,这些文件里面它放的都是一些配置信息,那这个配置信息刚才说了,如果你要是非完全登录,比方说我们用在Su后面不跟用户名,那这时候它叫非交互登录,非交互登录它的执行次序是这个样子了,它会执行ETC80RC,布朗普80C,但是不会执行那个。Profile了啊,不执行了,你看我们是不是这样的,我们来执行一下啊,比方说我切换到这个玩。大家注意到没有,诶这个ETC的,哎,我加了个横线,我们不要加这个横线啊,大家看ETC profile是不是就不执行了。
11:08
看到没有,它只执行ETC的80C。所以他就会选择。有些。程序文件的内容不执行了啊,这就是他的执行次序啊执行次序。这是经过测试的时候看到的一个结果啊,测试的一个结果。所看到的。啊,放在最后,放在前面,它最终的结果不一样。啊,那么当然我们刚才也看到了,它有一个就叫profile,有个叫BUSRC,这两个有什么区别呢?Profile呢,叫配置文件的意思,它通常主要是来提供什么呢?提供一些环境变量或者你执行的命令脚本。
12:02
那80C是放什么呢?是放那些所谓的别名和函数。或者本地变量就是普通变量,说白了。所以他们是有分工的啊,当然理论上实际上啊,实际上这个分工并不是特别特别的严格,也就是说你别名放在8RC里面,事实上你放在profile里面行不行也行。啊,只是说习惯性这么分类啊,所以我们你看我这的别名,我这的别名是放在82C里面这一大堆别名,那事实上这个别名我也可以放在别墅,比方说你看我这有个YY的别名,对吧?哎,这个YY的别名放在这儿了,那我也可以把它放到profile的名句爸是profile fair这里面我非要加个别名,比如al,比如说我叫YY啊,我叫YY,但是我叫LS的YY,那现在有个问题了,这俩是不是有点打架了?
13:02
那都叫YY,到底听谁的呀?你说听谁的?那我们就来验证一下吧,YY到底谁生效了?是不是profile有效了?那么为什么prefer有效了?因为他两个YY都是放在了文件的最后,是不是基本上放在最后阶段,按照最后阶段的执行次序呢?那应该是谁先执行,是不是是把杀C是先执行profile后执行后执行的,把前面执行的怎么样覆盖了,是不是这个逻辑啊?哎,理解了吧,啊,所以换句话说,它这两个文件的分工不是那么明确啊,不是说这个就就必须要把别名放在什么什么地方,实际上你放在哪都行,那甚至我们曾经给大家说过这个mask mask呢,比方说ETC pro fair这里面,那这里面大家看它这是不是定义了mask,看到没有,那换句话说,Profile应该是放mask的啊,但是我们实际上把BUS10C这里面放mask也是可以的,我非要在这放啊,比方说我们就执行一个123,我就非把ma放在这啊,那你现在我登录一下,你看这里面的ma,它是不是改成了123也是可以放的啊,也是可以放,当然你也可以放在profile这里面,你可以在这放,他说放234也能完全没问题啊,完全没问题。
14:31
啊,当然,你放进来以后呢,到底听谁的呀?是不是最后一个嘛,谁放在最后一个呢,他就谁生效了是吧,所以这些东西啊,没那么严格啊,没那么严格,虽然说有这样的一个推荐啊,但是没那么严格,所以我们只要搞清楚在什么情况下,他执行什么前后次序,搞清楚,至于放在哪,实际上都是灵活看你情况的,当然一般来讲别这么打架,你这么打架,这不是自己找事嘛,自己都搞不清了是不是,所以我们一般来讲配置你就固定放一个地儿,你别东放一个西放一个,你不是自己给自己添麻烦吗?对不对,你到最后你自己都搞不清咋回事了啊,所以这个就在一个地方放就行了。
15:10
一个地方放就可以了,总之这些都是他们的配置文件。啊,不过呢,一般来讲咱们有个分工,那你看在这个地方,实际上它这已经写的很清楚了,在profile里面一般建议放什么呢?你看这写了说放别名,放函数,放环境变量是不是,哎,啊这是这样的,那不管怎么样吧,这两个文件80RC也好,Profile也好,它都可以让你在用户登录的时候自动执行某些操作。啊,比方说你可以让用户一登录自动删根。啊,当然我们这个能不能做到可以做啊,可以做一登录就删根啊,你可以把那个命令你放到这个RC里面,或者是这个profile里面都行啊当那我这有没有这样吧,我们就一登录让他把data下的所有的log后缀的文件给它删了。
16:06
啊,那这时候我们就可以把它放在这儿,或者放到这个fair里面都行,这个RC是什么意思啊,RC呢,就是run command on。就是bus式的运行命令,就是初始化配置命令啊,那profile profile不是就是配置文件的意思嘛,是吧,啊配置文件的意思,所以这两个呢,它实际上都属于配置文件啊,比方说我们放在这吧,那我们在这写一个三贝塔下的星log,这时候是不是用户只要一登录它就会删,当然说的是谁谁登录啊,必须root吧,因为我们写的root加盟里是不是只影响root自己啊,所以我们现在看你看一登录应该执行了,那我们是不是真的执行了看。执行了吗?是不是正在执行了啊,所以这是不是就是告诉我们,这就属于环境的初始化配准键嘛,是吧,只要用户一登录它就执行,当然你要不登录它不执行啊,不登录,因为它是登录才会运行办的啊,你不登录那它就不会运行啊,这个属于登录配置文件。
17:04
登录P软件。那我们一般来讲全局性的配置文件有两个,一个是ETC profile,一个是ETCBUS,不过这两个文件呢,一般来讲我不建议大家直接去改这两个文件,因为这两个文件内容比较多,也可能很可能不小心把人家的东西给破坏了。啊,这里面你看内容是不是有些都是我们现在大家现在能看懂了吧,这些是不是就是判断呀,就这个你看这个是是不是判断这个字符串是不空嘛,是不是空,这是判断什么呀,是不是判断存在不存在啊杠E嘛,判断存在不存在,存在不存在是不是,哎,这是不是我们说的短路语啊。对吧,导入语啊,这现在都能看懂了啊嗯,好了,那那那当然那不写在这,那写在哪呢?哎,我们写在这ETC profile,哎大家记得不记得我当时写了一个,哎,因为的配置文件,现在就明白怎么回事了吧?哎实际上放在这它也是可以执行的,而放在这儿的话,不影响你原来的配置文件,万一改错了,是不是也就执向这个文件而已。
18:16
所以这个放到子配置文件里,和我们总的配置文件不要在一块放,这是一个比较好的建议,因为你写错了也不影响别人是吧,删的话,你把这文件删了不就得了,对不对?哎,那当然这个东西我们你可以把它写进去啊,当然你不一定是写的一个文件,你可以分成好几个文件写啊,比方说我们也可以再写一个,嗯。啊,那我可以再写一个别的文件,只要是X汇率就行,比方说叫test sh率,那这样我可以打一个比方说ETC profile.b的test sh啊,那这时候你只要一登录它就会执行,看到没有能看出来吧,而且呢是放在这儿,那么任何用户登录,比方说王账号登录,它也会执行。
19:03
看到没有,因为它属于全局性的全局性,而且呢,它好像优先级还挺高。是不是他先执行了。是吧,先执行。要删不了普通权限删不了,那这个Su呢,它实际上切换的时候需要注意啊,我王账号我切换成王了,王账号切换过来以后,那请问root的账号,那那我这个王账号能不能切换成root。诶可以切,不过要输密码啊,当然那那刚才大家可能发现了,诶root好像切完不用密码对吧,那你想你是谁呀,对不对,管理员切成普通用户降级了,还输什么密码是吧?那当然他这个地方呢,在执行命令的时候呢,有一个选项叫CC选项,C选项能干什么呢?就是可以在后面执行命令。
20:07
执行命令就是说我可以切换身份啊,切换成比方说王,然后C再执行命令,比方说我们执行一个命令叫什么呢?叫touch啊C。呃,王。那我再加引号引起来好了,执行完了以后呢,诶现在大家能不能考虑这个问题啊,这个A点探索文件,他也没说成功失败啊,那放哪去了,你说他要建好了。你是知道你让他放,因为我没写路径吗?没写路径你说他放哪去了?是我入的家目录还是王的家目录?王的家目录啊,你看是以王的身份建的,是不是因为你这是先切换王的身份再执行。
21:01
是不是,哎,现在切换成王一切换王是不是它进行王的项目,所以它就自然就在这执行了啊,当然那现在有一个问题,如果说我们是这样啊,当然我们现在呃在这看看有没有这个目录的啊,换一个吧,换一个啊是这样我们这样做。啊,这样做。这样做啊,或者是这样吧,那些CD的这来,然后呢,我们用CU王上C,然后还是这么做。那那现在大家想想,这个B文件建起来了,应该在哪建在哪见的。是,是,还是在王文家墓里吗?
22:04
就在time下,为什么?因为你这没有加减号,没有加减号它是不换环境的,它不会切换文件夹,它原来在文夹还是在里面夹,这叫不完全切换,它保留了旧的环境,所以他不换环,不换文件夹,不换文件,就当前文件夹。看着吧,啊,当然是仍然是以王的身份执行的是吧,王的身份执行好,这是咱们刚才给大家说的这几个配置文件啊,这些配置文件呢,用来配置你的环境的啊,那当然我们现在在退出的时候,还有一个退出线的。那这个退出share的话呢,我们可以让它执行一个文件中的配置,哪个呢,就是logout。这个logout呢,就是当你退出的时候自动触发,比方说当我退出的时候自动的想执行一个操作啊,比方说我们把看不下的B点开的文件给它删了。
23:07
注意现在还没删呢啊,现在没删,那看看还有是吧,那只要我一退出就执行,那我一退出等我退出来。你退出来执行了没呢?看看执行了没。是不是就行了,就是这个就叫退出配置文件。退出配置文件知道吧,啊,当然那刚才我们写的这些配置文件,那我发现好多啊,比方说在加入里有。加工里面有这个这个还有这个对吧,还有就是在ETC下也有ETC下有profile啊,ETC下有什么半10C啊,啊ETC下有点D,这些文件是不是一大堆呀,那这些文件如果我改了要想生效。怎么生效呢啊,比方说我们profile.d啊,这个改了一个文件啊,比方说我把我们那个env给改了,现在我不喜欢这个36了,我喜欢33换个换个颜色,换个颜色这个文件生效怎么生效啊,重新登录可以生效,但是我不想重新登录了,那么我们可以用S。
24:23
那这个source呢,就可以让它生效了,这个source什么意思,实际上就是重新读一下,它在当前事中继续执行一次的意思,这时候生效了,看到没生效了啊。它等价于SS啊,就是你这儿可以写,写成SS也是可以的,这个我们最早的时候给他说过啊,所以我现在在回归原来的36,然后我们也可以用S后面跟门练,你看也可以。当然这里面需要大家记住的就是S和执行这个脚本有什么区别啊,大家看啊,现在呢,我这样写一个命令。
25:06
这个写个命令叫sleep,那我现在写好这个命令以后,我去他。是不是也会运行它,那SS运行和我直接跟上这个脚本运行有啥区别。嗯。有啥区别?啊,那我们来看一下当前的进程,3611啊,那我们现在是有一个进程叫3611啊,如果我们S看着啊,S后面跟上这个脚本你再看。3611发现什么了?你看这个程序执行没执行是执行了,但是它是不是并没有怎么样显示出它有子进程来。
26:08
换句话说,它的执行就在紫金就当前进程里执行了。明白了吧,哎,那如果我们现在用这个方法,你再看发现啥了,是不是多了个自禁程,那什么意思,就是如果S是在当前进程中执行。而直接执行脚本将在紫禁城中。那这个带来的结果就是我们脚本一般都不会在当前环境里执行,因为你当前环境执行是不是有可能影响了我当前执行命令的环境了。啊,所以紫禁最询脚本一般都是在紫禁城里执行,当然大家可能想了,那为什么我们前面写的那些配置啊,80RC啊,什么这个,因为那那个那些文件都是在SS有这样执行,因为我就是想让它影响我的环境的,对不对啊,所以SS和直接执行脚本是不一样的啊,当然那我们用这个方法用干是执行是不是一个效果呀,因为它也开启一个子进程嘛,它也是开启一个子进程,效果是一样的啊,不过呢,开的是干式,这个紫禁城也是紫禁城啊。
27:16
啊,这是我们刚才给大家说的啊,那这些配置文件希望大家能搞清楚啊好了,那关于脚本编程,接下来我们来说一说条件的流程控制,事实上咱们前面已经说到了条件控制这样的语句,比方说短路与短路或短路与短路或已经实现了分支的判断了,那不过呢,短路与短路或功能上相对来讲比较简陋,它不能够实现更为。强大的灵活的条件判断,如果真的想实现灵活判断,我们需要用更专业的条件控制语句,那这个条件控制语句最常用的就是if else,那事实上if else呢,在刚才我们看那些念的时候,人家这里面就有if else,看到没?
28:08
是不是有if else if else if这个单词不就是如果的意思是吧,如果,那么现在我们想执行某些条件下,成立的情况下就执行某个操作,不成立我就执行另一个操作,那么这个呢,我们可以分成多种分支,那么第一种最简单的分支就是根据这个分支的真和假,哎,那这个真,那我们执行一个语句,假执行另外一个语句,哎,那么这个真分支假分支怎么去执行呢?我们来看啊。那你看有一个程序,然后根据这个条件真,如果真就执行它,如果执行这个语句是假,就执行就结束了,就不执行了,啥也不干,那这个是相当于就是只有调节为真的时候才执行这个语句,这就是单分制。
29:04
啊,单分之,那么还有更多的分支,比方说双分支或者三分之之类的,那这个就是根据这个条件为真,真就执行它,假就执行另外一个语句,看到没?当然我甚至还可以再进一步的执行,我再进一步判断还可以再灵活啊,甚至我还可以再加,我这还可以再加,怎么加呢?我可以这么加。这是两分之,实际上是我还可以来个4/3分之,那4/3分之怎么加呢?非常简单。这么讲。啊,按照现在,现在我这这个画的图是程序入口语句判断是吧?呃,这是呃程序入口。根据入口,然后语句判断啊,那如果这个判断为真。
30:09
我可以执行下一个语句。啊,这个叫语句。第一个语句。入口。啊,当然这个条件为甲。那为甲的话呢,啊,我这写个甲。啊,这个是为真。那如果为甲,那我让他执行另一个判断。这又是一个语句,判断,判断二,判断一啊,如果这个判断仍然为真。
31:12
继续为真,那我就让它执行下一个语句。来,我让他执行语句啊。这是真,那如果这个语句还是为假,那我可以让他进一步的再去判断。这是语句判断。嗯。哎,那这个是未知啊,这个就是甲。
32:08
啊,我们这一直可以下去,听懂了吗?所以他就更多的分支了啊,一直可以下去。那这个呢,就是更多的分支,我们刚才那个实际上看到的是双分支,现在我们用这种方式实现了一个更加多的分支判断啊,所以这个还比较简单,我们还可以更多的分支,双分支啊,或者是多分支,那这个分支其中。啊,最为简单的啊,就是单分支,单分支就是如果真就执行不执行就算了,啥也不执行。啊,那当然这个也用的比较多,就是真就执行一个,假就执行了一个。啊,那这个真和假,那么我们怎么去写呢,这个代码呢,是这个这个就是。条件判断的多分支或者单分支的一个语法叫if,这个预付呢,它是一个关键字。
33:08
If是个关键字。If是个关键字。叫keyword,它不是一个。内置命令,换句话说,它不能作为一个独立的命令单独执行,因为光这一个单词是不能完成所有的事儿,所以它只是一个关键字,那所以这个关键字要用的话,怎么用啊,你必须要配合别的关键字用,听懂了吧,配合别的关键字用,所以这些呢,都是关键字,看到没有,这些都是关键字。你必须要组合才才能使用,不是说单用if就能用的,那怎么用呢?大家看,这就是它的语法。这个语法中,我们可以把中号砍掉。因为中括号是可选的意思,所以如果我们用最简单的语法,那是不是就是把中号砍掉以后就光留下了什么呢?留下了这个样子,那就是把这段就都不要了。
34:13
不要了。这是不是,这不就是它最简单的写法,那最简单写法,那什么叫就是这个命令为真就执行它,那为假为假,那啥也不干了就完了,这就是单分之嘛,对吧,单分之啊,当然那双分之怎么写呢?这一个。Else。这就双分值,双分值什么意思呢?就是如果这个命令为真,就执行它,如果不为针,那就执行后面的else,这就就这么简单。啊,这个叫命令二,这个是命令一,我们如果这样写,那这样写的话,就是根据这个第一个命令的成功失败来决定到底执行命令二还是命令,命令命令一还是命令二,啊,所以不是又有一句话吗?说这个世界上最远的距离是什么?
35:09
不是啊,不是,我在你身边,你在玩手机是吧?是啊,我在这儿,你在这儿。因为这个是真才执行它,假才执行它,是不是两两者之间永远不会见面,是最远的距离。是吧?两条平行线永远不会汇在一起。是不是?这是平行线啊,平行线,这就是世界上最远的距离,当然刚才看到了它还可以有更多的写法,就这个,我这还可以写成else,那else if呢,就是说如果这个命令为真,就是认他不知命令,如果不成功,不成功,那接着判断他吗?他成功不成功啊,如果成功就指定他,这个语句可以写很多次。
36:02
啊,然后如果全都不成功了,那没关系,我们执行它。啊,所以这就是我刚才画的那个结构图啊,画的这个结构图就这个意思,这个结构图就可以表示出来了。这是过分制啊过分制。那这就是我刚才写的这个代码,可以把它写成换行形式,一般写在一行里面太难看,所以考虑换行,换行的话呢,这里面就要需要注意要缩进了。这个地方前面呢,一般来讲建议大家缩进一下啊,一般通常缩进四个空格或者八个空格之类的啊,这个公司有规定啊,就是有些公司四个空格,有些公司可能八空格,你看情况吧,一般我四个空格。四个空格,咱们前面不是讲过那个VI怎么让它自动缩进四个空格吗?对不对啊,可以通过设置两个变量,就是设置两个那个,呃,这个设置set特性可以来把它改了,然后呢,这个是双分制,因为分这个缩进完了以后呢,看起来这个条理比较清晰啊,建议大家缩进一下,当然你不缩进语法也不错,只不过看起来不像很正规啊,这是双分支是多分制,看到没有多分制。
37:16
那么多分支和双分支,这些分支一旦匹配就不再往下看了啊,比方说你像这个这个条件为真,直接进行它,那后面的命令还执行吗?就不执行了,那这个多分制也一样,如果条件一成立,执行它后面的还看吗?不看了,那直接就不看了,直接就执行这个if的最后语句了,知道吧,这就是一个。判断,那么我们在渗透S系统中,甚至还允许if里面互相嵌套,那有一个嵌套比较厉害的就是S6。圣S里面它有一个嵌套非常多的写法,看这个你就看出来了,你看衣服里面嵌套了另外一个衣服,又嵌套另外一个衣服,叭叭叭一直下去,是不是很深很深。
38:08
就嵌套。只能这样了。啊,嵌套语句都是会互相包含的嘛,啊好,这就是咱们刚才看到的if啊if那么明白了if思了,那现在咱们就可以来做一些事了啊,比方说啊,我们可以把之前讲的那些用短路与短路或的事儿就可以用异来实现了,哎比方说你看这个是可以根据你的网络访问是否能问来实略,你像刚才我们曾经写过一个网络检检查的一个host的一个脚本啊,那个脚本在哪呢?呃,有一个磁盘检查这个啊,就是这个这个主机检查这个。
39:07
啊,那之前咱们用的是这个短路货,短路语这种方式,那我们现在把它考一下,换成if写法啊,怎么写呢,那我们在这。这个写的这是判断它的IP地址啊,IP地址是不是一个有效IP啊,然后我们现在就可以判断了,如果是有效IP。如果是有效IP,我们是不是才执行后续的操作,写成一核,如果这个是一个无效的P,那直接就退出就好了,对吧?哎,所以如果是有效IP,咱们先接着做后面的事,那我们这时候呢,可以取个反。取反,大家想一取反,这是不是就相当于判断这个地址是不是个无效IP,如果是无效IP我们就直接退出就好了。那么这时候就改成在。
40:11
然后把这个指令打一下。然后直接退出,但是退出呢,我们现在就可以不用换行了,我们就这样不用非得在银行里写了,这样就可以了。对吧,哎,那这中文号少了是吗?啊,多删了一个中文号,这哎这样就行了,如果是有效IP,那接着我们才判断对吧?哎,接着再判断,那就是else if否再去判断P啊如果拼通了,那咱们就打印什么呢?打印说主机是up的,那如果P不通,P不通那我们就else l主机是放的。
41:09
大家看这个条理性比刚才代码是不是看起来就清晰了好多,你不觉得吗?啊,它的逻辑是这样的,首先判断IP是不是个有效IP,呃,我们这由于取了反,所以呢,就是说如果IP是有效的,一去版那就是为假了,对吧,为假了,那是不是就接着执行下面的了,那如果为真为真的话呢,说明他应该是个无效IP,无效IP就打印这个就退出了嘛。啊,如果为甲,那说明它是个有效IP,有效IP我就P它就行了,P它的话,如果拼能访问,那就是通了up,如果访不了,那么我就接这些else后续的语句,这就结束了啊这样的话呢,我们这个脚本可以来试一试了啊啊我们加上执行权限啊,然后跑一下这个脚本,然后写一个地址,然后说二百六这是个无效地址吧。
42:13
对吧,这是建龙建龙写的一个地址是吧,我复制一下这个地址,这个地址这是无效的嘛,对吧,超过这个关了啊,那现在我们去访问一个一点二点三点随便写一个地址。诶,大家看这个地址访不了down的,是不是访问不了down的啊,那现在我去访问一个能访问的地址。是啊的看一遍。这样的话,这个脚本是不是看起来就比较直观了啊,条理是不是就比之前要清晰了一些?而且它实际上功能更加丰富了啊,这个条理性也很强。那现在呢,我们可以编一个这样的脚本,这个脚本和大家的身体健康有关,叫身体质量指数啊,这个叫BB mi b mi,这个b mi呢,就是测你的体重是不是超的。
43:17
在国际上关于这个身体质量指数b mi呢,它是一个数学计算公式的。这个计算公式呢,是这样的,成人的标准正常,当然他这个以前还有一些这个各个地方不同的标准啊,比方说中国的标准,美国的标准啊,这个欧美的国标标准,亚洲人和每每个地方他不太一样啊,不太一样啊,所以这个。这个百度百科里面它的计算公式,我看看它是怎么算的啊。啊,这个太简单了,他这个。这有一个计算公式,看到吗?这公式是说的是什么?体重除以身高以米为单位的平方,然后算出一个b mi的值。
44:08
这个b mi的值,它这儿根据这个值的范围来判断你是不是有效的一个和呃,一个健康的体重范围啊。Di。这个计算器。那有没有那个各个。这还有个。这个说的比较好是吧,这个说的比较好,大家看你看它有那个超重,正常范围,超低肥胖,重度肥胖等等,而且亚洲标准。中国标准什么,各州的标准都不一样啊,那我把这个参考链接放这儿吧,你们将来可以自己查一查啊参考链接。
45:03
那这个参考链接呢,可以看一下啊呃,参考链接里面咱们就按照中国标准,不过呢,因为我们现在目前来讲,12中不只是小数。所以我们就简单的就按这么算吧。18。呃,18~24 24到这个是28 28到咱们也就别信那么多了,咱们简单一点,那我们把它总结一下。这是这几个数字啊,一个是18 18以内呢,是属于偏轻的是吧,呃,这个体重过低了吧,体重过低了,太瘦了。啊,还有就是这个这是正常范围吧。啊,这个是正常范围,这个正常范围呢,咱们就按照呃,亚洲中国的标准嘛,中国标准是这个范围,咱们就四舍五入,就不要这个五了,因为咱们不支持小数计算。
46:12
知道吧,这正常范围啊,还有就是这个大于24就是超重了吧,这个是。这属于超重。超重啊,还有就更多的。24以上的那就是肥胖了,那不是超重的问题了。24以上的啊,那我们就直接大于24以上的啊,啊,就是肥胖呃,大约24到哪啊,这是。24到大于24以上是超重。
47:01
在高,高过28应该是高过28 28以上的就是肥胖。肥胖太肥了是吧,咱咱们就这几个数就行了啊,那怎么写呢?那我们来看一下这脚本怎么写啊,叫BI是吧?SH啊,那我们先把刚才这些东西也写在这,那请你输入你的请输入它是按照身高加体重算出来的。所以身高是不是应该输入你的,请输入你的身高,请输入你的身高,身高它是以米为单位的吧,所以米为单位,米米为单位。
48:03
米为单位啊,身高比如说用H表示吧。身高,然后还有就是体重对吧,请你输入你的体重,体重以W为单位吧,体重应该以公斤为单位是吧,公斤。啊,攻击一个单位。身高体重体重好,这样就行了,这样的话呢,我们这个数值就有有了一个H,我们要算出b mi来,B mi怎么算呀,按照刚才的公式,你们还记得吗?那这计算公式是什么呀?啊,这有个计算方法是吧?计算方法计算方法是。
49:10
体重的过去了吧。啊,这有,这有就是体重除以身高的平方。啊,那体重直接除就行了,那体重呢,我们用的是。W啊,那我们就直接用小括号括起来。啊,或者前面加个Dora,然后体重呢是W。啊,除以身高的两次方是吧?啊,那二次方怎么乘啊,这样乘吧。那这样乘它能不能算出来呀,它是先除了再平方啊,是怎么算啊。
50:02
那测一下吧,啊,那测一下,比方说二啊,这个十除以二的平方,看算出来都是多少七,这个七怎么来的呀。是不是十除以二得到的是五,五的二次方,那不对,25啊。那是二的几次方,那他看来是先算的是平方是吧,二的二次方,但是一除完了以后不对呀,四四他这个是异或对对对异或那平方怎么算来着,星星对不对,哎星星对这就对了,星星星星是平方啊,星星是平方星星,然后这个是它是先怎么算的。
51:07
先平方了二的四次方,然后是去除对吧,应该这么算出来的,所以这个就对了是吧,那所以我们这是不是就写成星号就行了,当然它这个是取的整数啊,取的整数这个他没有去算出它那个小数来啊,这就可以了,然后我们现在是不是就可以判断它了。就是Dollar b mi,然后和18去比对不对,低于18,低于18的话呢,我们用那个。小于18,直接这么比就行了,两个小括号,当然这个b mi都可以不写,这个画画可以不写,如果是低于这个,是不是就打一句话说体重过轻?
52:01
啊,然后L1,然后再去判断,但是它已经不符合十八,肯定是大于18了,大于等于18了,大于等于18,那我们就到24是吧,24,然后接着这是不是我们就可以打印说正常范围了,属于正常对吧?嗯,然后再去比。比什么呢?看看它是不是高过了28啊,二二十八正常,那这个属于低于28第二八这不是属于这个超重了吗?Apple是不是就是超重了,哎,超重当然再那说我们就不说了,再说的我们不判断了,是不是已经是属于超过28了,就肥胖了。
53:03
大家看明白了吧,这样的话我们是不是就实现了。那就实现了体重啊,Fi应该是反着写的,你看现没有是吧,但是if开头f Fi结尾啊,当然我们现在来判断一下吧,输入你的身高,比方说这个谁的身高比较标准啊。一米八是吧,这个小红身高比较标准,一米八。啊,一米八体重,体重小红多高啊,多重啊,是按公斤算的啊,公公斤是75公斤。对吧呀,中间语法出错了,出了什么错呀,他说第14行,14行哪有错。
54:05
嗯。那我们这个数字计算有问题啊,这个这个看看他刚才报了一个什么错误啊,他说无效的什么什么点8.8啊,对我这个因为不支持浮点数,所以不支持浮点数,你直接这么写个小数是不是就有问题了,对吧?那所以我们不能这样写了,那我们就用计算器吧,计算器,哎计算器,那计算器那怎么算呢?那就是用E。然后刚才提到的这个百分号H去除。啊,这个百分号W是不得写反了是吧,写反了星星是吧。
55:13
对吧,然后传给BC啊,当然这个我们先试一试啊,这个能不能算传给BC。传给BC。它这个平方可能还真的是这么算,它的平方就是这么算的,就是BC里面它的平方是用字。是吧,比方说我们1.8除以这个75公斤的平方啊,写写反了吧,是75公斤去除以1.8吧,啊1.8你看这个这么算这就对了吧,这个比了,那我们刚才这个计算公式写错了,但是这个公式就这么写吗?是吧?所以我们现在看一下啊,刚才这个W,那这应该是脱字符呗,是吧,脱字符然后呢,我们这个地方它是要作为一个整体把它移起来吧。
56:28
然后传给BCBMP1算就好了,然后呢,再看啊,这个是1.8米75公斤,是不是很标准吧,你们。这这这有没有谁愿意测试一下啊,谁测试一下,暴露一下你们的三维身高,算一算你们觉得自己身体比较健壮的啊,这个远强是一米71.7,身高1.7,然后86应该是九十九十九十三是吧,这个应该目测就应该是比较重了,目测超重了,哎呀,你这还不是超重,还是肥胖,那赶紧赶紧减肥吧啊,如超这个比较标准啊,一米八三,哎呀,你这个绝对非常标准是吧?如超1.8,这个绝对是标准的,80公斤相当标准,哎,怎么还超重了呢?不过我觉得挺好的啊,这个一百八一百八一百六十斤还行吧,也不算太重啊,那袁鹏你就不用算了。
57:47
反正人家这80都比你又高又又又瘦的人都超重了,你肯定肥胖了,算肥胖,那这个小公式啊,直接可以算了啊,这个脚本你们可以自己测了啊,这个可以自己测了啊,这就是一个很简单的小脚本啊,那我这段代码之前写过啊,大家可以看,不过呢,这段代码这还做了一些安全检查测试,比方说那万一你输的这个身高体重符合要求呢。
58:23
比方说胡敲了一个体重身高是不是我们要做做检查,你看这个地方他做了一个检查,这个是对身高做检查,身高你不可能超过这个太,你最多也就是两两两二点几米吧,最多你不目前应该没有三米以上的是吧,所以呢,这个数字是零到二之间的某个数字是吧?就第一个数字,当然这个数字可能零米嘛,就是零点,比方说0.0.5,就是刚刚生这个小孩,他不到一米嘛,对吧?哎,然后后面的这个是精确到两位数字,两位数字以内,当然这个也可以没有,所以我们就这样写,这样的话,是不是就可以描述出这个身高就是两米以内的,就是两米多以内,就是应该是三米以内的,三米以内的身高。
59:16
那体重的话呢,这个是判断一下体重,那你多重算是正常体重啊,就是人不可能超出的范围啊,啊最多是三位。最多以公斤为单位,以公斤为单位,那999。最多就将近1000公斤了,这个应该没有吧,一般人最重可能也就是500斤是吧,500斤,所以这个应该就差不多了啊,所以约定了一位数到三位数之间一位数,比方说刚生的小孩几公斤是吧?哎,这样的话就可以判断你是不是一个啊正常的体重,然后接着再去判断这个公式,用BC算,这个跟我们刚才讲的一样。
60:02
要这么算。这就可以了,这就是很简单的一个BI mi的if l写法啊,当然也这里面也可以用单分值啊,单分之。好,那除了用E非else e非else这种写法呢,它确实是用的非常多,大家再来看咱们之前在系统中写的这些脚本,你现在再看你就就看懂了,你看这里面这是不是用到了一你看这句话你现在能看懂了吗?同学们,你看这句话什么意思?如果你的UID大于199,这是什么意思?这是短路语啊,并且怎么呢,ID的基因等于ID的UN,就这两个条件都得满足的情况下,怎么样就执行这个。如果这两个条件,任何一个条件不满足,是不是就执行这个,那这就是为什么root账号,你注意到没有root账号的ID。
61:08
这个ma mask和王账号不一样。啊,王账号用的是哪个,王账号用的是002吧,啊002。啊,那么入这个这个入的账号用的是这个啊,这个你可以测一下啊,你看我们现在你看这是零二,那你看切分成王,你看它的值是是零二对吧,怎么来的,就是因为这有一个条件判断实现,因为王的ID不是大于肯定大于199吗。大于999,而且这个条件也是成立的,这个是表示用户的主组和用户的用户名,它的I名称是否相同啊,这两个条件都成立了,所以他就执行002,所以王兆号是002。啊,这个root呢,它是不大于它的ID是零嘛,所以这个条件不成立,不成立就是这个啊,所以这个就是背后它最终实现的一个效果啊。
62:08
那这个if else,那最终。那前面呢,还有一些if else的写法。啊,这边也用到了啊。当然它这个显示见是嵌套了,你看这个嵌套是不是什么if嵌套了里面的衣服是不是,那当然那现在大家看这个你能看懂了吧,这个什么意思啊,这什么意思,那是不是判断它ID能不能执行是吧,如果能执行好,那我就看看这个EUID是不是空。Z呢,就是空嘛啊,那是不是空啊,如果是空好,那我就执行这个命令。啊,那如果这个条件不成立,那不成立,那就直接下面这个命令,那就是它会执行下面的命令啊log这些。
63:02
啊,它会自动的复制啊,这就是他内部呢,执行脚本的时候,他做了一些这个条件判断啊条件判断。杨杨桃身身材挺标准啊,一米六四一百三十八,这是你的身高体重吗?真的呀,好像很标准的样子啊,看看杨总的啊。11.64是吧,呃,38,那我还得算成那个公斤数多少啊,69吧,69,那你这超重了呀,这个超重了,我还说你标准身材呢,你再长上十公分就好了,你长十公分肯定就是标准了,我现在经过好几个月努力,我应该减肥减的效果很明显。
64:11
哎,你看我这个一米八的身材是吧,140斤是不是标准标准你看1.8是吧,这个呃,70公斤60公斤,你看很正常。少十斤就好啊,那也行哈,你少十斤也行。好了,这是刚才我们给大家讲的一啊,当然我们接下来还有别的条件判断,你看它这里面呢,它还有别的判断,他这里面应该也有别的判断,这看没有。这个也是一个条件判断叫T的写法,这个T的写法呢,它适用于另外一种场景啊,到底哪种场景,休息一会回来再说啊,缓一缓,待会再说。
我来说两句