00:01
好,那我们上午呢,讲了呃,文件管理的一些操作,并且呢,我们也讲了重定向的实现,那我们提到了有三个。常用的文件描述符。分别对应的是零、一、二。那我们已经说过一和二了。一对应的是标准。输出。二对应的是标准错误,那还缺了一个标准输入。标准输入呢是零。那当然对于我们很多命运来讲呢。有没有需要标准输入?我们现在目前学的命令不少。但是。需要标准输入的命令并不是特别多。相对标准输出的要少很多。当然,大家可以思考一下啊。
01:01
呃,你记得有哪些命令需要标准输入,所以必要输入就是它需要你输一些东西,它才能去执行。你不输东西,他不执行。你们脑子里想一想,现在咱们学了哪些命令是需要呃去交互式的输一些东西,他才接着去处理的啊?Password。RM。Echo echo需要输入吗?你回车不就直行了?哎,比较经典的就是。什么呢?AC计算器?是不是?你看你不敲东西,他就卡在这等着,你是不是就等着你输那个数学公式啊。对不对,哎,当然它也有标准输出啊,你看屏幕上打印的这些东西,有可能是标准输出或者错误啊,然后你输出咱们先不管它,你看你是不是输入之后回车,它同时也有标准输出。
02:04
这就是一个很典型的既需要标准输入又需要标准输出的一面。当然,我们现在想实现标准输入的重定向。那标准输出的重定向咱们已经知道怎么做了,那标准输入的重定向。怎么实现呢?诶,那咱们需要把标准输入。需要输入内容事先存到文件中,然后从文件里面。自动的读入需要标准输入的内容啊,比方说我们现在可以这么来干,我们利用标准输出生成数学公式。啊,大家看这个文件里面是不是就生成了一个二乘三。然后BC不是需要标准输入吗?那我们就用标准输入的重定向来。
03:00
代替人工输入,那么标准输入的重定向怎么实现呢?那就是。用小于号。零来实现,那我们小于号,当然零呢可以一般来讲我们可以省略不写啊,我们可以不用写,直接就可以了。啊,标准输入的重定向,当然这个标准输入重进项呢,我们往往呢是可以。有一些别的命令啊,比方说这边有个TR命令,TR命令我们待会再说,我们先用这个,那我们就直接这样写就行了,就写BC后面跟上一个文件。小于号实现的就是把小于号后面跟的这个文件。来代替。终端终端键盘输入的内容传给小于号左侧的命令。看到吗?是不是实现了,当然这个零你要非要写上啊,这个零这样直接写这样不行,那我们用前面那个零写在前面行不行。
04:05
啊,那一个零是写在前面啊,零小于号,不过一般来讲中间值零一般不写啊,就是我们都省略这样写来设。那就是标准输入的。充电一下。那标准输入的重定向和标准输出的重定向两个一配合,大家想诶,这是不是彻底的解决了数据的生成和数据的处理的两个环节。以后数据生成,我们用标准输出重定向可以生成大量数据放到文件里,然后再用标准输入的重定向来处理生成的这些文件数据。由此,我们再也用不着手工再去一点点输入内容让计算机处理了。就实现了自动化的处理。是不是这个逻辑啊。当然那我们BC这个需要标准输入,并不仅仅它,那实际上你比如说RM,我们删一个文件啊,例如这个我删一个这个呃,F。
05:11
哎,那这个Y是不是我们要手工输入,我们是不是也可以事先把这个Y写到文件里。啊,比方说我输一个。Y,哎,我放在这里面,然后再用刚才说的这个标准输入重一下yes。大家看这个文件是不是被删了。算了吧。你看,只要需要标准输入的地方,我们都可以用标准输入成镜像。来代替人工输入。当然咱们标准输入的命令并不仅仅这两个,有很多啊,比方说我们可以实现。这个这个邮件发送邮件,邮件这个命令呢,它是可以读取。
06:04
终端你的输入信息作为邮件正文。比方说我们这给的标题大家都知道,发邮件总得有个标题对吧,S呢,就是subject标题。啊,然后我们可以点。某个用户来发邮件,Hello,给谁发呢?比方说我的电脑上有一个王用户。注意我们现在是单击发送啊,当然这个要想实现的话呢,实际上有一个要求,就是事先你必须要安装邮件服务,我这有邮件服务。但是如果大家。是最小化安装Linux系统。没有邮件服务。你这个地方没有二五。大家有没有是最小安装的,有多少最小安装的?呃,如果没有最小安装,哎,打一我看看啊这么多,那你现在也执行一下这条命令,跟我一样,然后你看看这有没有25这个字样。
07:07
如果没有好,那么要求大家来装一个软件,这个软件叫post fix,然后把它设为启动。需要执行一下这条命令,要不你这个邮件做不了。大家把这个命令照抄一遍啊,抄一遍我发到咱们那个群里头。这是两条命令啊,我用分号把它隔开了。啊,这样的话呢,你再执行完了以后你再看看。是不是就有了二五了。
08:24
好,这样的话我们就可以来互相发邮件啊,那我们来试一试啊,看看怎么去发邮件。那发邮件是这样的,首先我们刚才已经把邮件服务已经开启起来,我们就可以发邮件,那么一回车它就会等待,等待什么呢?让你输邮件正文。比方说,How are you。How old are you啊,我的英语也就这样了。是吧,啊,怎么是你怎么还是你就行了啊fine thankyou完了好了,那这样的话呢,这个邮件就发出去了,发出去以后呢,我们来看一下王兆号是否能收到这封邮件。
09:10
那我们在这边打开这个终端。啊,这边开一个随便一个窗口,那2F2。然后我拿王账号来登录,登录之后没有大家看这一封信就收到了。这儿有一个邮件的编号。谁发的邮件时间,邮件的标题?那么我们可以输一,就意味着我要看第一封信的邮件正文。大家看。来了吧,收到了。
10:02
当然,我们这样发邮件仅仅实现了一个。本机发送。如果我想跨网络发送,比方说走到互联网去发,那这个需要配一下邮箱。这个配油箱的话呢,呃,我这儿有一个配油箱的方法,那就是我们需要在咱们服务器上。打开咱们的服务器。咱们这边有一个FTP的服务器。这个。这上面已经把我上课用到的一些文件传上去了啊,那其中有一个叫看的,看这里面有没有看看不是这是没有吗。第三排的第四个。这个是吧,啊,这有一个文件,你把这个文件呢,给它拖到Linux里去。
11:05
但是你们就别用了啊,这是我个人邮箱啊。拖过来。哟,直接拖还不行,我先把它下到我的那个Windows里啊,或者用W来下。嗯,W get。W呢,我们可以直接来下载。呀,这个中文里面还带中文呀。这个名字。到时候改一下吧。把这个。文件改一下应该,要不看起来不方便。哇,FP这边把这个文件给它改一下。
12:03
好,这样就行了。好,那我再来这样访问一下。用WFDP把这个路径呢给他写一下就行。然后在这儿去找一下mail。啊,把这个路径呢贴过来,里面有一个文件。啊,这个文件就下来了,下来以后呢,这个文件要求要呃把它放在一个地方才行啊,放在哪呢?放在ETC。
13:00
叫没有点RC,把它移到这里面去,移到这来。啊,这里面原来有一个把它,呃,追加进去。这里面内容就是我们发邮件的信息,然后追加,正好咱们学了这个重定向,把它追加进来。追加到那个ETC。没有点RC。聚焦到这里面去,好,大家看追加进去以后,最下面是不是就加了这几行。这几行的内容,这就是你发邮件的时候,你要走互联网发送邮件,你要说清楚你是以谁的身份来发,发的时候要指定邮件服务器的信息,包括你的验证信息,这个呢是邮箱对应发送的时候一个验证密码。这个密码并不是邮箱的登录密码,就是用来实现邮件的这个发送用的密码,这个叫授权码,这个授权码呢,大家可以自己去自己的那个邮件邮箱里面去配一下啊,这个东西是可以配置的。
14:28
啊,在哪呢,在这个地方。打开你的邮箱。好登录邮箱之后呢,这里面有一个设置。这些先点开啊。啊,大家看在这。这边上面有一个设置,这个设置这呢,我们看到有邮箱信息。再往下翻,大家看这边就有一个。
15:03
开启服务,那么你把这个SMDB服务呢开启起来。这个开启起来以后,将来才能发送邮件,知道吧,发送邮件的时候,这就有一个授权码。这个点击生成授权码。啊,我这已经生成了啊,这个授权码呢,就是刚才这个数字。当然你每个人发邮件,你应该用自己的邮箱,我这个是我自己的QQ邮箱,这是我的QQ号,所以你们将来可以把自己的QQ号写进去,这些都替换成自己的QQ号,其他都保留,然后这个授权码呢,就用我刚才说的这个界面来获取就行了啊,这样的话呢,我们就可以看到这个。授权码,点击授权码,包括这个授权码可能要发一发一个短信,就把你的手机用这个手机注册的一个手机给这个地方来发。发完以后就可以得到一个授权码,授权码呢,你就可以写在这儿对吧?啊,当然昨天我发现有同学利用我的这个发邮件了。
16:01
利用我的当然也不是不行,但是你不是没有成就,成就感嘛,你用自己的嘛,对不对,用自己的。好,那么这个发进去以后呢,我们就可以发邮件,比方说我们自己给自己发一份,我自己给自己发来说我们就test,然后我们利用。标准输入重庆项啊,那我就给我自己发吧啊,29308620QQ,然后我利用重一项,比方说我们就简单一点吧,我把这个操系统的版本。呃,给他作为邮件正文。来发,你看我能不能收到。哎,大家看是不是已经看到了,来了缝隙看见了没。看到吗?我就不打开了啊,我这个邮件的提示马上就到了。所以你们也可以用这种方式来发,明白了吧?哎,这不就邮件的正文,咱们用文件重新项来实现了。
17:00
当然这个需要配一下啊,要不你发不出去啊,自己加加上色行就够了。这个替换成自己的邮箱,当然也不一定是QQ邮箱,你也可以用什么163邮箱啊,或者是别的那个邮箱也行,他们都有类似的这种授权码,你们自己看一下就行了。好,这就是咱们标准输入重定向也实现了邮件发送,当然这个邮件发送这种方式将来干嘛呢?就是可以实现邮件报警。那将来我们一旦发现磁盘或者是系统中发生了一些这个比较危险的情况,而磁盘空间满了啊,或者这个CPU啊,这个利用率太高了。把这个各种信息报警出来了,那么你就可以给他触发邮件发送。啊,当然现在发邮件你手机上能不能收到啊。手机能收到这个QQ邮箱的邮件吗?可以吧,它那个微信里面是有QQ的通知的,就是说实际上我现在说是给QQ发,但是微信里面会有通知,所以你可以在微信里面看到,所以相对来讲还是比较及时的。
18:15
直接就会发。啊,当然如果说我用。139的邮箱,你们有有没有139的这个中国联通移动的。中国移动的它有一个139邮箱,139邮箱那更厉害,你要给他来发邮件,那他就直接给你发短信了,知道吗。这你写一个中国移动的邮箱,这些谁来给中国移动的手机号报一下,我给他发一个邮件啊。有没有啊138。U盘是多少,那你们打一下吧,打一下这个你能验证的啊,你别到时候我发出去是别人骚扰不好啊,这个已经发出来了,那我就随便找一个,这个是158的是吧,涛总的是不是涛总我看看啊,这是你的邮箱吧,你确定吗?先给别人发出去啊。
19:06
那我们就来来一个没有杠S,然后就就随便写一个啊,就是M442。来自于马马哥。然后这个邮件的正文,邮件正文我就随便再找一个文件嘛,啊,随便找一个文件,好这样来发,看看能不能收到啊发过去了。看你的手机上有没有这个这个短信之类的。139。这就发出去了啊,139的邮箱是中国移动的邮箱,中国移动的邮箱的话呢,它会有那个短信发通知,比如说。这就更快了啊,短信都能收到。当然你收到的应该是从我这发的,就是我的邮箱发的,这就是从我这身份发的。呃,这个你没有139是吧,你没有139的邮箱是不是。
20:04
饕餮有是不是?红鱼有是吗?你有139邮箱吗?你有139邮箱才行,你没有139邮箱,你光写这个没有用啊。啊。这个得我我写一个,我写一个吧。这个有没有。应该有。但是你要是时间不太长了,不用的话,有可能就给你139时候给你关了呀。啊,你可以去139邮箱去看一看啊。
21:01
啊,这个就是发邮件啊,发邮件大家知道主要是配这个东西。这个内容呢,也可以放在哪呢,也可以放在这,也可以放在这个用户的家目录里面,放在这儿也是可以的。也就是说不一定放在ETC下,不过放在ETC下呢,这个比较通用啊,放在ETC下那个没有RC文件里面,大家都可以用啊。放在自己加盟里面,通常来讲就是你只是自己的一个用户用。所以这个通用性就比较弱一些。好,那接下来咱们来看一下标准输入重定向的其他用法。那标准输入呢,我们刚才给大家说了一些这个需要标准输入的命令啊,例如这个没有命令,BC命令,那事实上还有cat命令,看命令呢,这个命令它本身也可以支持标准输目。啊,什么意思呢,是这样的,你看我这一回车。发现了吗?他是不是又等着你输东西了,那你比方说我们输一个hello。
22:05
哎哎,大家发现没有,他说啥他就回应啥。啊,比方说马克一丢。是你说啥他就回应啥。啊,那这样的话呢,我们是不是就可以利用它干点啥事了,哎,我们可以这么做。啊,我们可以直接这么来写。既然它读取键盘输入,同时会把输入的内容输出。是不是我这就可以这写一些内容,比方说我是王老师是吧,啊这个from。北京从北京来的,然后CTRLC结束,大家看。这是不是用它就可以简单的实现一个文本编辑的功能?是吧,直接生成了,因为它输入的这种问题,直接给你重新向出来了。当然咱们也可以怎么做呢?我们也可以这么做。
23:02
大家想想这是啥意思?这是不是就是连键盘输也不用输了,因为我们做了标准输入的程序下,那是不是把。标准输入用文件代替。同时传给pad以后,它本身有标准输出,那实际上就相当于把ecl文件复制了一份,放到了F1里。对吧,哎,那看一下F1看到没有,那实际上用cat是不是变相的实现了文件复制的功能。对不对,当然这个是用标准输入实现。好,标准输入重定项,这个我们就。实现了。好,那。这边呢,有一个标准输入重定向一个也支持的一个命令叫TR命令,TR命令呢,它的功能是做转换和字符的删除的。
24:07
那我们可以看一下这个命令的,简单的说,明天是个外部命令,我们用help来看一下它的大概说明。这个是TR命令的用法。添加命令呢,它能够转换做一些压缩,包括删除字符。对标准输入大家发现没有,它是对标准输入来处理的。那标准输入处理。呃,我我这个手机上收到邮件了,现在才收到比较慢啊,过了好久。现在收到了,然后这边标准输入,那所以这个TR呢,它是可以把键盘输入的标准输入内容做转换,转换的时候它默认是把第一个字符转换成第二个字符对应的。信息,那例如我们来试一试123替换成XYZ。
25:07
那么它的这个作用呢,就是看到你输入的123,我就替换成XYZ,当然那我们来试试。进了吗?当然他只替换123那四是不是我没定义啊,没定义它就不管你了。哎,这就是123啊,当然我们刚才定义的时候,这一个字符对应后续一个字符。那当然,如果我们这边万一要多了怎么办,后面要少了。那就会出现什么现象呢?两边不匹配了,前面四个后面三个,那怎么办呢。看到效果了吗?那他就是把。
26:00
123分别还是对应的XYZ,那四呢,多出去了,多出去了就对应V就行了。对应最后一个V。明白吧,哎,这就是他的一个转换逻辑,当然如果你这比他还要多。那你这个B对应的是不是前面没有字符。没有字符,那是不是也就会出现什么现象。那是不是就相当于这个B就没人替换。因为他想替换人家,人家没有跟他对应关系,对不对啊,所以这个多出去没有什么实意义了啊,少了他还可以,少了的话呢,就是把1234最后这个四对之一了。但是呢,这个对应关系呢,它并不是固定的,也可以去调,那我们这边呢,有一个选项可以影响咱们的这个转换,那其中呢,我们有一个这样的一个替换。T。
27:00
好,那我们来看一下,如果加上T的话,会带来什么变化。发现了吗?什么变化,是不是就是那个四它也。不去用Z替换了。那就要求是一一对应的。啊,这就是他的一个对应关系,当然我们用这个呢,可以轻松的实现一些以前我们想做的事,比方说我们想把小写字母替换,替换成大写字母,我可以这么写。它可以表示一个区间,你随便写。是不是替换成大写了?把小写字母替换成大写,当然反过来也可以把大写替换成小写,既然它支持标准输入,那我是不是就可以用标准输入重复一下,我可以把文件中的内容直接传进去是不是?
28:01
转化成大写字母。都没有问题啊,当然这个文件本身里面肯定有一些小写字母,现在就全被转换成了大写字母。这就是标准输入的重定下。TR命令除了做一一对应的转换,它还可以删除字符。那么删除字符我们用什么呢D?删除所有属于第一个字符集中的字符。那就意味着我从标准输入中发现某些字符,我就把它删了,比方说我们这123。ABC,然后XY。诶,大家看。发现啥了,随便挑的啊,大家发现是不是他把那个XYZ给删了,剩下的都留下了。哎,这就是D。当然,我们还可以进一步的做另一件事,C,这C是什么意思呢?C就是。
29:13
C就是取反。C是取补集取反。取补集,那就是D是三,C是取反,那是不是就是除了123。全闪。哎,怎么没反应啊,没关系,再看个D。为什么呢?因为除了一二三都是你,包括回车换行,他都认为是要你要要处理的字符了。所以剩下的就剩下了123。所以这就是TR命令的一个处理命令,那当然它可以支持标准输入重一下,所以我们用这个TR命令呢,你可以做一些事情啊,比方说我们可以把一些。输出里面带有的一些信息,做一些过滤。
30:03
那比方说这个文件。这个文件里面存放的。是什么?大家看一下这个文件的名称,实际上也能猜到什么意思。什么意思啊,随机数。那么DV这是个设备,那么它生成的就是各种各样的随机字符。当然这个随机字符乱七八糟,什么都有,也有乱码啊,我们现在CTRLC把它停了啊。那大家看到这个出现了很多乱七八糟东西,我们现在期望从中挑选出我们想要的。保留的。比方说字母,数字。我留下来,那这时候怎么办呢?哎,我们可以这么来干。
31:02
我们可以把这个文件的输出信息。D。我存到一个文件里。当然我这个它这个文件呢,是这个输出的信息是不停的啊,所以我们输出一点就给它停下来就行了啊,比方说我们就随便写一个read out。好,然后呢,输出一点好了,CTRLC,然后这时候呢,我们看这里面是不是有乱七八糟什么都有了。然后接着我们想从这里面去过滤出我们想要的一部分内容来,那怎么办呢?我们标准输入重复一下,那就是什么呢?就是TR。后面跟上要处理的内容。我们可以把。除了数字字符以外的其他字符。全给它删了,当然怎么表示字母加数字呢?诶,我们在T2里面有一个和我们前面学过的通配符很像的一个写法,叫这些符号。
32:09
这些符号里面求包括数字和字母的组合,就是阿拉法number,看到没?哎,这个就是字母加数字,所以我们不用再写零到九,什么A到B之类的啊,就直接这么写就可以了。然后再用刚才说的输入重定向来实现,大家想这样写是不是就是把这个文件中的。除了字母加数字以外的信息就删了,光留下了大家能够看得懂的。数字和。字母看到了吗?就留下来了。这个过程全是自动处理的。由此呢,我们就可以解放人工操作了。为什么有了计算机以后,科技发展特别快?因为代替了人工,效率得到了极大提升啊。
33:04
是吧,好,这就是我们用的这种方法,气压。好,那TR命令呢,它还可以处理一些。符号,比方说大家看这个符号。这个符号表示return。而斜杠N呢,表示的是六脉。牛赖呢,就是星好。大家记得在Windows里我们创建的文本文件比Linux里面它的。文本文件的区别在于?多了一个return键嘛。是不是多了一个return啊?所以我们在Windows里面创建一个文本文件,比方说我在这拿一个记事本,随便写ABC,哎,随便写,写上三行,然后给它存一个文件,然后说就叫win test。啊,然后存到桌面上。
34:02
为什么你看这个地方它默认还是,诶我这个是什么版本啊。这个版本怎么还是UN呢?这这个这个是。这个不是那个是WIN10的老板吗。是吧,这个这个版本比较老了。是温版,不过就是老版。很老的版,这个版比较老,所以呢,你看它里面带有的这个文本的保存还是基于呢,就是不是UN code的编码,那它这个你直接传到,如果是中文直接传到Linux里,它是乱码。啊,知道吗?啊,不过我这儿没有中文,英文的还行。啊,把它存进去,存去以后呢,我们现在把它这个传到Linux里去。
35:13
啊,在这。好,我把它扔到linu。嗯。好,传进去以后,咱们来看一下这个文件。那这个文件呢,我们用fire命令是可以看到它是不是有一个多了一个所谓的return。和Linux的文件的格式不一样,那么以前我们给大家讲过,怎么把一个Windows的格式文件给它转换成一个Linux的格式文件,实际上说白了就是把这个0D去掉了,是不是就行了?那现在我们有了TR以后,就可以完成这个工作,怎么做呢?就是把刚才提到的斜杠R3个就行。
36:04
斜杠就表示的是return。标准输入重定向,然后再给它导出来生成一个N2文件,你看这个N2文件的内容它是不是已经符合。没有那个所谓的没了。看了吗?是不是实现了。哎,用这种方式是不是也能够做到把Windows的格式转换成Linux的文本格式?看懂了吗?啊,这就是TR命令的这样的一些用法啊。那T命令呢,还能压缩?它这个压缩呢,指的就是。相邻的重复字符。它可以把连续的挨着的若干字符给它压缩掉。啊,比方说我们可以用T-S压缩谁呀,比方说ABC压缩,如果是ABC,那就是连着的A,连着的B,连着C,它就给你压缩了。
37:09
但是其他的不跟你一样。知道吧,所以用这种方式去实现去重的功能。啊,这是TR命令的一个用法,由于TR命令呢,它支持标准输入,所以我们就可以用标准输入重定向。来实现对文件的。处理。那当然,我们现在已经学习了。标准输入、标准输出的以及标准错误的重定向。那大家可以看一下DF这个命令,DF这个命令呢,它可以显示分区利用率。那其中。它这个地方我们看到有很多空格把它们隔开。虽然看起来很整齐。
38:00
但是如果我们想把这个空格给它压缩成一个。只要连着一块儿,连着的空格给它压成一个。那这个怎么实现呢?哎,那么我们可以把这个先放到一个新文件里面,然后我们看到这个文件的内容里面有好多空格,我们用杠S什么,是不是就是空格后面跟上这个文件内容。是不是就把多余的空格给压缩小了?看到吧,但是它连着的算重复啊,你要不跟着它就不算了。诶,就可以去除。再去除。好,这是刚才我们给大家讲的这样的一些用法啊,这个你看我都讲了,这里面都有。啊,就有粒子。好,那我们现在实现了标准输入的重定向,另外还有一个所谓的多行重定向,什么叫多行重定向呢?是这样的。
39:01
那多行重叠项指的就是比方说我现在大家看我操作F1,现在请问大家。我现在F1里的内容。我现在看一下啊,比方说我找一个已经存在的文件。呃,这个文件吧,就是BA这个文件,BA这个文件我们看到有这么大,已经有内容了,但是我现在重镜像BA test。当我一回车。现在请问大家干事test的这个文件内容会发生什么变化?它里面有没有内容吗。大家发现没有,已经清空了。已经清空了。啊,接着T是不是要等待你键盘输入,那我们就输吧,比方说我们输一个ABC。
40:01
啊,做一个赖赖衣。哎,我输完了以后,现在还没回车啊,那现在请问这个文件里面有内容吗。还是零好,那现在我们回车一下,哎,回车完了以后呢,这里面有没有内容。是不是已经变成六个字节了?那就意味着只要你回车,它是不是就会自动的把输入重这个输出重定向就写到文件里去了。啊,当然,那接下来你继续还可以接接着写,比方说是L。那这时候呢,你再看。要进去了。那这什么意思啊,是不是就是你只要回车一次,它就会重定向一次。所以我们把这种叫单行重定向。是不是所谓一行不就回车一次吗?回车一次不就一行吗?一行它就会做一次重新下。当然,这种方式。会有一些缺陷,就是我这个文件。
41:03
单行做一次,那事实上我们可能干脆就把一所有的行都写完了,一块重进项多好啊,写一行就重进项一次,这个有点太频繁。我们还不知道能能不能把所有的内容都写完了,一次重定向不就完了吗?哎,那么要想实现就要用到多行重定向,那么多行重定向是怎么个意思呢?是这样的。我们可以。写上一个文件。啊,假设我们用F1TEST。这个F1T,我看这有没有F1T,有有一个,不过它本身就是空的啊,啊,这个F1文件就删了对吧?啊,那我现在用。1TEST。好,然后呢,我们要想把一多好几行都一块写完,一块儿提交,那这时候怎么办呢?哎,我们用这个方法,这叫多行重令下。写法比较特殊,就是两个小于号后面跟一个关键字,这个关键字呢,随便写,我这写个嗯。
42:07
你也可以写随便,比如说写个你写什么,那将来就最后要必须要用相同的这个字符串来结束,因为你要写好几行,那好几行是不是总得标清楚谁是第一行,谁是最后一行,那怎么表示呢?就是hello hello开始,然后往后就开始一二行,三行,四行,然后再写个hello,然后就结束了。不过呢,一般来讲,我们习惯性的写个uf。EF呢叫end of fire,所以这个是比较喜欢用的,因为它有含义啊,事实上呢,你随便写一下,你写个叹号也不是不可以啊,写个什么其他符号也都可以,比方说我就用叹号或者ABC都写,那不过呢,待会你这写叹号,最后就得叹号两边也成对。哎,好,那么回车大家看,接着你就等。现在我们在写,比方说。
43:02
Y1Y2现在我写了两行以后,那请问大家F1TEST里面现在有内容吗?大家看连这个文件都不会创建,这文件还没生成呢,所以是不是就是等你写完了,它才会一块写入到这个文件里去。对吧,哎,当然这时候我们叹号回车,诶,怎么没反应啊。你不是说叹号开始,叹号结束吗?注意,我悄悄的在后面加了个空格。所以导致它没有结束,所以这个叹号一定是孤零零的一行,前后不能带东西。必须加叹号,什么也不能跟,跟个空格都不行。啊,必须光一个叹号,前面不能东西,后面不能跟东西,这才行,这才是成对的,所以推车你看这回行了,当然了,这时候我们看到F1里面有没有内容。
44:01
有了。看到了吗?哎,这就是多行重定向。那么,多行重镜像能干什么呢?多行重镜像,将来我们经常用它来批量生成文本文件内容。因为我们可以事先把要在系统中生成的文件用多行程镜像来实现。啊,这个是常用的技术。啊,大家可以看一下我的那个。博客是吧?拿出我的博客来。你看我这个博客里面有一些脚本,当然咱们还没学脚本,至少咱们现在脚本里面的一些东西应该能看得懂啊。网站打开比较慢啊。服,服务器配置比较低,赶最便宜的时候买的。
45:02
好像是多少钱的,200多块钱买了三年的,所以我这网站可以这个用三年啊用三年。呃,随便找一个啊,随便找一个这个一键安装买吧,这个里面可能就有。福气该换换了是吧,要不涛总捐一下呗。募捐一下,嗯。这个这个这个背后它实际上就是大家看啊,这里面有没有呢看。看到没?那这段代码的作用就是在系统中生成一个ETC下的y.CF文件,用多行程定向实现的。
46:02
当然大家可以看到我这加了一个横线啊,这个实际上不加横线也行啊,这个横线有自己的作用,它是为了对齐用的,当然我这也没有用到对齐,所以这个横线加不加都行,就是两个小一号uf,最后呢是uf结束,中间就是你要生成的文件内容,明白了吧,在批量生成文件内容。啊,当然我这个脚本其他的内容大家可能还看不懂呢,咱还没学呢,等我们学到后面的时候你都会了啊。这个脚本啥时候写的呀?是吧,2月12号过年期间吧,就是。疫情没事了,我就写脚本。啊,门也出不去,就在家。学习呗,是不是?啊,这是刚才给大家讲的多行重镜像啊,那包括邮箱实际上也可以做。邮箱也可以事先用多行重叠项,这个多行重叠项咱们还有一个专业称呼叫什么呢?叫就地文本,叫here documents。
47:06
就地文本。啊,那么我们可以这个中止符号前后要成对出现,可以用这些符号都可以。啊,你随便写啊,实际上你随便写个ABC也行啊。嗯,都可以啊,这就是多行重定项,多行重定向用的非常多。那当然多行充电项还有一个非常好的功能,就是我们可以怎么做呢?我们可以把一些电的东西写进去,比方说我可以写。这是不是一个变量啊。对吧?那这个变量我要写在这儿,大家想想,它最终生成的文件内容是不是就会用变量的值来替代呢?那咱们来试试吧。啊,这个这个我们。
48:02
看一下。呃。一下吧。啊,叹号结束。看到没?这是不是有好处啊?因为我们的文本不是个死文本。它是可以变的。是不是我们可以根据自己的需要,将来用多行重镜像来生成?具体的文件内容。这是一个非常好的特点。那将来我们根据不同的环境来生成,而不是说写死的一个东西。非常灵活。当然我们变量还没有详细讲,但至少咱们前面应该接触过pass变量是吧?Share变量,PS one变量,这不都是我们学过的吗?那这些思想希望大家慢慢先能接受,后面我们会专门来讲变量的概念。好,这是刚才给大家讲的。
49:01
那。我们现在呢,为了实现某个功能,有的时候感觉好像有点。并不是很直接啊,比方说我们刚才曾经做了一件事,就是把这个地的。多个空格压缩成一个,我们当时怎么干的呀?我们是不是先把它生成到一个文件里面,然后再用TR多行重定项把这个空格给它传了,这么传,那事实上我们这么折折腾,好像这中间就是利用了Di这个log文件做了一个中间结果。是吧,中介一样,能不能我们现在就想了,我省去这个中间人,直接把两个命令串起来该多好啊。是不是,那何苦生成一个这样的临时文件,因为这个文件将来不用,我还得把它删了,还得是不是?哎,那既然你就是想把diff这个命令的执行结果处理一下,那我不用这个中间文件,直接把diff和TR2个命令串起来。
50:10
该多好啊。那事实上是有这种技术的,这个技术就是管道技术。管道,当然,大家学过管道文件还记得吗?管道文件是不是就是一个进程把信息输出到管道里面,另一个文件,另一个进程从管道里面读出信息?而我们在Linux里面就有一个管道技术,它能做到连接两个程序。这个管道弧就是竖线。竖线表示管道,最终它的格式是这个样子。管道符左边是个命令,管道符右边又是个命令。允许多次管道啊,所以这可能会加多个,当然我们以最简单的为例,哎,一个命令加个管道,再加个命令二啊,那后续的就理解了,这个好说啊,那么它的功能是什么呢?它的功能是命令一的标准输出。
51:17
正常是不是在屏幕上打印对吧,我们不在屏幕上打印了,因为命令二恰恰需要标准输入。也就意味着管道符后面的命令应该是有标准输入功能的。当然我们前面学过的命令,据需要标准输入的命令不多啊,所以放到管道符后面的命令相对少一些,比方说BC就可以,比方说mail就可以啊,比方说刚才说TR命令都行。那么它的作用就是把命令一的标准输出作为命令二的标准输入,由此就把两个命令串起来了。我们就不需要借助于那个文件了,所以我们现在就可以这么干了啊,你像刚才说的这个问题,我们现在是不是就可以用D管道弧TR-S。
52:10
搞定了。它的命令的作用就是D,这个命令的输出直接利用管道符传给PR。处理完了。我们现在是不是用不到这个文件了。对不对,直接把两个命令连起来了。管道符,它可以直接用来连接两个命令,当然并不是任何两个命令都能放到管道符的左侧,右侧的。当然,你觉得应该有什么条件,什么样的条件的命令才能放到管道符的左边,什么样的条件的命令才能放到管道符的右侧?是不是就要求管道符左边这个命令应该有标准输出吧,那有些命令它没输出,你放进去传传啥呀,对不对,所以一定是有标准输出的,那同样的管道符后面的命令一定要有标准输入。
53:11
是不是,哎,所以这个东西不能随便扔啊,这命令啊,当然呢,现在咱们就可以这么来做,比方说这个命令它有标准输出,那我们就可以用TRTRB标准输入呢,那我们是不是就可以诶。来转换大小写可以了吧,当然也不一定TR,那我也可以干点别的事情,比方说发邮件行不行,然后我再给王老师发一条邮件,再再骚扰一次。啊,一会儿会收到一个TEST2的邮件来了,看到没?啊,是不是,当然邮件的正文就是那个文件的内容。是不是哎就可以实现了。
54:01
而这就是标准输入、标准输出。管道弧。尤其管道符用的非常多,不过呢,这个地方我需要强调一点,管道符左侧的命令一定是标准输出。那我们说过,输出的结果有可能是错误啊。那万一左边的命令出了错,他能传过去吗?你觉得管道符左边命令如果是错误,它能传过去吗?比方说叉叉叉,这是不会报错呀。传过去了吗?显而易见,没传过去,如果传过去正常应该是谁给我发一见老师啊,这个你不要骚扰我啊,要骚扰我米西米西。给我发邮件了,幺四查一下,咱们QQ群里不就那几个人吗?你查一查好,那现在我们可以看到,你看这个T,那显而易见,这个是标准错误,它是不处理的,对吧?不处理,那标准错误不处理,那问题是我们执行命令的时候一定能确保管道符左命令一定能成功吗?
55:19
是不是有的时候还不能确保啊,所以这时候我们就希望不论管道符的命令成功失败,都希望传给左侧,那怎么办呀。哎,那我们曾经学过一种方法,就是二大于号AT1。啥意思,是不是管你左边对的,那对的就传那右边,如果左边错了,错了就把它变成对的。不就行了吗?二大于二的一,不就是把错的变成对的啊,这个洗钱知道怎么洗吧。哎呀,都知道啊,那你们都是大佬啊,这行的黑道的啊。洗钱洗钱不就是把那些来路不明的脏钱洗成合法的钱嘛,是吧,这个以前我去乌鲁木齐出差,那是也是好多年前乌鲁木齐那个,当时正好闹那个暴乱,那个时候我不知道是大概多少年,我都忘了几乌鲁木齐。
56:17
新疆乌鲁木齐嘛,那个那个当时也是暴乱那个杀人那个。那就去了没几个月,我正好去了,呃,幸亏没赶上,呃这个去给乌鲁木齐那个整个新疆省的这个这个银行,人民银行还是给他们培训,给他们讲了点系统啊,当时我就说到洗钱,他们就特别明白,因为他们就管这洗钱的事。大家都知道人民银行的职位是什么,人民银行就是管所有银行是吧,人民银行就是管理这些商业银行啊,啊,所以这个一大于号就干这个事儿了,你看成了吧。知道吧,哎,关系对的他就给对的,当然也没问题,如果对的,那大不了就对的就转呗,对不对,对的也没问题。
57:07
当然这个写法呢,是比较经典的老老写法,如果是新写法也行,那就是加个at符号也是可以的。也是可以的,这是相对新的写法啊。啊,那这就是我们用的管道符。那说到这个管道符,我们这样处理完以后,我进一步的还可以再做处理吧。管道符可以接着处理,因为它有标准输出,有标准输出我们就可以处理,对不对?哎,比方说我把中间的空格全给它删了,那删空格三空格就这样子删了,这不就全连一块了吗。对不对,所以我可以接着处理。那么将来工作中很有可能我们会多次管道,一次处理不行两次,两次不行三次,所以有的时候写脚本你会发现这个命令串起来就比较长。
58:02
让管道符一次一次处理。多次处理。啊,这是这个命令,那说到这儿呢,我们还有一个补充的命令,叫气命令。这个T命令的功能是做什么的,就是把。命令的执行结果。我们发现现在有一个特点,就是我们命令执行完了以后啊,它要么重定向走了,然后屏幕上就不显示了。要么我们在这个这个系统中在终端上打印,所以二者好像是不能兼得的。那我们现在是这样的一个需要,如果我们在命令执行的时候,希望它能够输出信息。比方说我们这样。
59:02
诶,怎么都给了。差不了,算了,这么着吧。要擦都擦,那这个命令执行的时候我们说了,正常情况下,如果一个命令有标准输出,是不是直接在屏幕上就把它打印出来了的,屏幕我们可以用标准输出重定向,比方说大于号,是不是可以把它重定向到文件里去。但是二者好像就像鱼和熊掌一样,不可兼得。大家不觉得吗?是不是一旦充电像屏幕上就不显示了?要么你在屏幕上显示,是不是就不重定向。对吧,啊,当然我们作为人来讲,总是希望都能兼得的。是不是,哎,前任也得留着,现任也得留着,那怎么达到这个目的呢?那咱们就得用一个新的命令,叫P命令,可以来实现。
60:00
那T命令可以帮助我们实现二者兼得的功能,T命令它的功能,这个T命令长得就像T血衫一样,所以我刚才画图画的就像T血衫。它的作用就是它可以把标准输入的内容,屏幕上输出的同时还会把它再打印写到文件里去,所以后面可以跟一个文件,比方说我跟一个A派文件,然后后面。这儿可以把一个标准输入内容来进行。显示,比方说ABC,你看我输什么,它是不是还继续显示。那写完了以后,CTRLC停了,大家看这里面有没有内容。是不是都有,也就是说他是不是两件事都干了,屏幕上该打印打印,是不是就文件里重镜像就做了。那既然这样,而且T命令是通过键盘,它接受标准输入,那接受变成输入,那我们是不是就可以用管道符了,什么意思啊,我们是不是就可以这么干了?
61:10
我们可以把LS这个命令的输出结果用T命令发到这个,这个发到这个a test文件里,同时屏幕上还要接着把LS的执行结果显示出来。大家看这个a.ST里面是不是就是结果。是不,两件事都干了,看到没有,哎,这就错了,当然我们发现有一个问题啊,这个这个,呃,这个命令a test文件,如果我这换一个命令,那原来的a.T文件还在吗?这个文件李总还在吗?原来的内容还在不?发现怎么样了,被覆盖了吧,不覆盖了,那有人说那我能保留啊,当然也能保留了,保留加个杠A就行了,比方说我这换一个命令啊,换一个不爱卖。
62:06
是不是留下来了,原内容也没丢,他还给你留着。那就是杠为A,是判追加的意思。所以有了这个东西以后,带来的好处就是我们还可以,既然它有标准输出,那我们是不是还可以进一步的再做处理?对不对,它可以再传嘛,这不就行了,我们可以再管道。啊,哎,这个命令呢,经常用于干什么呢?就是有的时候我们想把多行重镜像和。T组合起来达到一个目的,就是我们生成文件的时候,还希望能够让我们看到生成的文件的模样。什么意思呢?我总说一个例子你就知道了,那我们用多行重定向。比方说我还是用这个看。哎,这里面能不能加反应代号啊。
63:01
我是。呃,这个这个外卖。是吧?这这能不能执行啊这个。啊。啊,我们这么算起来。然后后面我再写一个文件啊,比方说这个这个叫呃。Welcome to。然后我就写,就是我是外卖。啊,Welcome to啊。当然我这也可以打一些变量之类的。然后e of。大家能猜到我这个事做的是什么意思吗?
64:09
他是啥意思呀?我直接敲了半天,目标是什么?是不是就是把这个文件生成了,同时屏幕还要打印一遍。大家看我是不是既看到了它结果同时这个文件也生成了。那这个将来我们放到未来将来学习的脚本里面是有好处的,因为放到脚本里面,我一执行,我既知道它的生成的文件的内容是什么。哎,我也能够生成这个文件的。具体的内容,这样的话我就确保了我达到我的目的了,要不生成文件了,我也不知道啥样了,我是不是得看看,还得再那看的话还得自己去挑,不如T一步到位。因为它既生成文件,又在屏幕上显示,显示出来我是不是就踏实了,真的达到我的目的了?明白了吧,所以你看刚才这个反应,代尔号是不是用起来了。
65:04
是不是也实现了一个动态内容的生成?并不是一个固定的内容。啊,所以我们将来生成的文件是可以根据你的需要来生成,而不是一个写死的。啊,这就是咱们给大家讲的重定向的。这一个部分。那么有的时候可能还会用到横线这个,横线这个我们。有些命令是支持横线,比方说w get。这个w get命令呢,是用来下载资源的,它里面呢,有的时候可以支持横线,这个横线咱们看一下有一个叫杠O的。输出大O这个。呃,大家可以看到,它是把下载下来的文件写入到文件里面去。
66:05
但是我们可以后面跟一个输出,但是他这个帮助里面没有写,没有写的话,我们可以进到麦里面去,因为这个help他看到的不详细啊,那在这我们可以搜一下杠O啊,大家看这一个。它默认情况下是把文件下载下来,存到一个新文件里面,杠后面要跟一个文件,但是呢,如果我们不想生成一个文件,那直接就想在屏幕上打印,你可以用横线看到了没有。那是不是就意味着我们?把下载下来文件在屏幕上显示的意思。所以我现在就可以把。网上的一些文件,比方说把我那个网站吧。我这网站的密码啥的我也忘了。在我的机器上存着,我我现在连不上去啊。算了,那就连不上去了。
67:00
啊,那那我就自己做一个吧。自己做一个。模拟的啊。嗯。这个67起来没有。诶。已经打开了。开了这么多吗?怎么这么多啊?嗯。啊,在这好,我先登录一下啊,我看我的地址。
68:00
地址已经变了,呃,我去改一下吧。UDV。若。把这个替换一下。
69:10
啊,当然我这儿下载的话呢,也可以从咱们那个上课的FTP服务器上来下一下也行啊,这个刚才咱们曾经看到过FTP服务器啊,它这是有资源的,你看这个上面有很多上课用的文件,比方说我们就以这个文件为例吧,这个文件叫log。那我们可以直接利用w get来下载下来,我们用FTP172160.1log。默认情况下下载下来的文件呢,这个文件的内容和原来的文件的内容一样,名字名字也一样保留下来了啊,但是这个文件我看一下,这应该不是一个文本文件,它是个二进制文件,那就没什么实际意义了,我们希望看到的是一个文本文件。
70:00
那这个get这都是。二进制文件,那我们下这个吧,这些呢应该是,诶这个color这个挺好。那我们就下一下这个文件,这个color文件。好,那么color文件呢,是这样。Color。Color文件。Color,好,那这个文件应该是个普通文本文件,那我们现在用w get来下载一下,好,那么下载完了以后呢,我们来看一下这个color。诶,大家看五颜六色的一个文件。啊,那这个文件呢,我们下载下来以后,我们可以用杠O横线,什么意思呢?就是我们不会再下载生成这个文件,而是我把这个文件的内容在屏幕上直接显示,我把它删了,那这就是所谓的也是另外一种重定向。
71:01
它默认下载下来,放到当前目录下,名,名字和原来一样,现在我给它不在文件里保存,而是在屏幕上打印,看到没有,是不是也可以啊?大家看是不是直接就显示出来了。那你看就用到了一个横线,横线往往实现的就是类似的这样的一个功能。所以我们用这个w get呢。它实际上也能够充当浏览器的功能。啊,这个有的时候呢,咱们这个浏览器。想用浏览器,手上没有现成的。好的浏览器你可以用W来代替啊,比方说我这个服务器呢。啊,我这个地址已经改过来了六好,那现在我去连一下六。10.0.6。好,连上来以后啊,我去在上面做一个页面,比方说welcome to啊,Edo,哎,然后放到这个目录下。
72:11
好,这个页面呢,我给它做出来。做出来以后,把这个服务呢,给它启动起来,这是一个网页服务,现在我们通过浏览器呢,就可以来访问这个网站了啊,十点零点零点二百啊,这个0.0.66。大家看,虽然这个界面很简简单,但是确实能达到效果,那现在我们就可以用刚才说的方法来实现,怎么实现呢?这样我们这就可以用刚才说的这个地址,HTTP3W,呃,应该是10.0.6。看到没有,是不是就直接看到数据了,当然我们发现它有一些什么,打印下载的一些信息,这些信息我不想看,那我们这有个Q选项。
73:08
是不是就可以直接显示出页面了,所以用这个命令可以来代替浏览器,看到没有可以代替浏览器。好,这就是咱们刚才给大家实现的啊,当然刚才那个color呢,这个也是完全可以做到的,你也可以用Q。啊,把这些信息。Color。这个加一个横线。加在后面啊,这个这两个前后顺序你给搞错了,这样就可以了。好,所以我们这个命令希望大家有印象,将来我们在尤其后面的课程中。我们手上没有浏览器的情况下,就可以用它来临时充当浏览器。那浏览器使用。
74:00
好,这就是咱们给大家介绍的标准输入重定向这一部分内容。啊,这里面有一些脚本啊,这个脚本。是在服务器上的,但是我这服务器上有没有我不知道了,现在来试一试吧。好,我来试一试,看看能不能执行走。诶,有。啊,大家看,这就是我在我那个网站上存的一个脚本,这个作用呢,就是把这个脚本下载下来展示在面前,看到没有,这个脚本是我们未来要学习的。最简单的hello word脚本。那交。啊,当然这个实际上它是下载下来了,只不过在屏幕上打印了,看到没有,它没有在直接生成文件啊,如果你想下载也可以,不过我这用的是二大于号dvno,事实上我们用不着这个,因为我们刚才说过有一个Q选项是不是也可以做到。
75:03
是不是Q选项就是把那些啊标准错误呀隐藏起来,不不显示哎静默,所以二大于号第一频道实际上最终达到的目的跟这个是一样的。好了,这就是我们给大家讲的。多行重定向,包括这个输入的啊,这个管道符实现了多个命令的重定向。所以这小节希望大家下来好好的理解一下啊,我们做到了什么呢?标准输入的重定项,标准输出的重定项,标准错误的重定项,管道符。用的是什么符号,那大于号二大于号是吧?小于号还有什么两个小于号还用到了一个竖线管道。对不对,他用到了什么啊?二大于号AND1。还有什么at大于号等等。这些符号呢,大家要。
76:01
了解。啊,当然大家可以不用记为什么,因为这些东西以后用天天用,可以经常用,慢慢就记住了。你也不用刻意记住啊,敲的多了就记住,当然你要是老不动手,那肯定不行啊。所以上课呢,大家一方面要听下来,一定要练啊,练了才是你的,好了,那这一章节咱们介绍完以后呢,咱们稍微休息一会,待会进入到下一章节。
我来说两句