00:00
好,那么这一章呢,我们讲一下这个输入输出的这个重定项啊,以及管道啊,这些包括一些文件操作的一些命令啊,那首先说那个输入输出啊,首先我们要知道一个概念,就是什么叫标准输入啊,标准输出啊,标准输入指的就是什么呢?正常你比如说咱们输一个命令是吧?呃,那么呃,这个它的这个输入的话,你是用键盘来输入,所以键盘这种一般就是属于咱们这个叫标准输入设备啊,那什么叫标准输出呢?你这命令运行,你看结果显示在屏幕上,屏幕就是咱们这个叫标准输出设备啊,那么呃,什么叫重定向呢?就是说咱们不不通过正常的这种设备来输入输出啊,你比如说你看啊,我标准输出的话,我这不输出在屏幕上了吗?说我现在这个命令的结果,我不想让它输出在屏幕上,我重定向就重新给它指定一个地儿,比如我想输出到一个文件,输出到哪呢?
01:00
Root下的desktop下的,比如说琴输入到这个文件里,输出啊,输出到这个文件里,那这个大于号表示的就是输出重定向,这一回车你看屏幕上就不出来这个这些东西了,而你再去看这个琴,Root下的这个desktop这桌面上这个琴,你去看它输出到这个琴这个文件里了啊,这就叫输出的重定向,就是原来标准应该输出在屏幕上啊,现在输出到这儿了啊,这叫输出重定向啊,那如果说我再换一个,比如说我,呃DF杠大THH啊,这个还没讲DF杠大THH,这是咱们查咱们系统磁盘,你看看SDA2啊,什么这些磁盘sda啊,这什么大小啊,容量百分比,咱们先用一下这个啊,比如这条命令,我标准输出也是输出在屏幕上,比如说我也想给它输出重那下这个到这个root下desktop下这个琴这个点是吧,这个时候你再看一眼这个琴这个文件。
02:01
啊,你看诶,刚才那堆东西没了,变成这个结果了啊,就是什么意思呢?你如果说用这个大于号,就是这个叫输出重定向,你每次往外输出的时候,它会自动把原文件清空啊,有同学说老师哎哟,我不想清空,原来那东西我还想留着啊,那怎么办呢?那你可以这样,你比如说啊。IOIO在咱们这个命令里是显示是吧,比如显示123456,这1I就IO到屏幕上了是吧?比如我现在IO这个结果,我也想输到这个root下的,这个deskop下的是吧?我要这么着一回车呢,刚才DFTH磁盘的这个信息在这个文件里就没了,那我也想保留的话,我可以来一个这个两个大于号,两个大于号叫追加重定项,哎,我这个时候我这个时候我再去看那个秦的文件,你看原来的东西也留着啊,然后新加这东西也进来了,这叫追加重定项啊,一个大于号就把前面的抹了,两个大于号呢,追加啊,追加在后边啊,一般这种技术用在什么,比如写日志什么的是吧,咱们不能把原来抹了一条一条往后写啊,用这种重镜项啊,那么这这个呢,叫正确的输出啊,咱们前面其实默认啊,你比如说我IQ什么这个到这个地儿,前面其实默认还有个一啊,一叫正确的啊你。
03:26
比如说呢,还有一种二二是错误的,什么叫错误重定向呢?你看啊,我要乱打一东西,它出来不是有一报错吗?报错这东西叫错误的重叠项啊,这东西你要是直接用这个大于号是输出不出来的,你比如还给它搁在这琴里。你看这个时候你发现它这个错误信息还在屏幕上,而且呢,我去看这个文件,打开看里边没东西啊,里边没东西,为什么没东西呢?因为我用大于号就首先把前面的东西抹了,而我这错误信息又没输进来,所以这文件是空的啊,错误的信息如果想输出重定向的话,那怎么办呢?你得这样,如果你知道这出来是报错的信息的话,你前面得加一个二,二表示错误的啊,前面那其实应该是有个一,但是一我也可以不写好,正确的输出是一可以不写,但如果错误的一定要写二大于号这个,诶,这时候你发现刚才那报错信息就这条就不出现在屏幕上了,为什么呢?它就跑到这个文件里了啊,输出错误的信息重定项的话,一定前面得加一个二啊,同样道理,你再写一堆东西,你要想二大于大于号,你就想追加重录项的话,也是两个大于号,这个时候你再去看这个文件,你看错误的信息都进来了啊,那么。
04:42
如果说在一个这个命令的结果里有正确的,也有错误的啊,那怎么办呢?你比如说什么呢?咱们前面章节咱们讲过犯的啊,比如说咱们讲这个用user,诶找这个杠user USR啊老打错啊USR我找秦这个用户属于他的文件,你看这个结果里是不是有正确的是吧,这这底下这些是正确的结果是吧,这些呢,这些是错误的结果,那么这这个如果说这个输出到屏幕上,这个输出有正确有错误的怎么办呢?那你这个就看的清楚了,我如果用大于号的话,比如说我到这个到一里啊,然后呢,错误的。
05:24
到这样这样,我正确的文件输出一个叫yes的文件啊,错误的输出一个叫no的文件,那这会儿你就看得清楚了,我这一回车你发现正确错误的都没有显示在屏幕上,他们都被重定向了,正确的被重定向了这个yes这个文件里,你看是吧,错误的呢,被重定向到了no这个文件里啊,这是咱们讲输出啊,重定向这个概念啊,同样的呢,就是说还有一个就是什么呢?就是哎哟,我正确错误的,我不能搁一块儿吗?你比如说我想把它搁一块儿怎么办呀,你可以这么着啊,正确的错误的,如果你都想输出到一个文件里,你可以加一个什么呢?加一个这个符号啊,这个这个把它输出,比如这个文件叫二啊,这个时候你看一眼那二,诶,这二里边正确错误的全都有了啊,这是这几种,这个叫输出的重定项啊,那么正确的呢,直接大于号就行,错误的要加一二大于号,然后。
06:25
哦,如果是正确错误全要来这个啊,来一个这个,这就能把这正确错误的全都给它弄过来了啊,那么这是输出的重定项啊,那么输入呢,也可以重庆项用这个小于号啊,你比如说啊,你比如说我迈这个秦啊,这表示什么呢?这表示表表示给秦的用户写信啊,比如主题subject,主题一串一内容你随便写啊,写到最后怎么结束呢?CTRLD这个就结束了啊,你速到这个秦下去,你敲麦,你看诶这收着一封信入发的啊,主题是一串一啊,然后你摁这个信的编号一回车,你可以看到这封信的内容啊,就是这么用啊,那怎么叫输入重定项呢?一般输入重定项用的比较少啊,一般来说就这么用,比如说小于号输入重类项,比如ETC下的这个FS table吧,啊,算了,ETF password吧,我想把某一个文件当做附件。
07:25
发给这个用户的时候,我们一般用这个输入重定向,就是标准输入,不是应该从键盘输入吗?输入重定向就是我把一个文件啊,输入重定向到这里边这么用啊,这么用你这个时候你再塑造这个琴啊,你去看mail。看有第二封信了吧,这第二封信你看一眼,你看里边包含的这个ETC password内容啊,这是这是咱们叫输输入重项的一种用法啊,输入重名项还有一种用法就是那个现在先介绍一下,呃,后边一般是写在一些呃这个程序文件里啊,它一般做交互用啊,你比如说cat啊,Cat大于号输输出的重镜项,比如这文件叫什么呢?秦test啊,然后呢,呃,追加输入重定项e of这个格式啊,这个格式什么意思啊,我先让你看结果你就知道了这个格式啊cat,然后直接输出重定项到一个文件里,然后呢,输入重定项e off表示什么呢?见着这个结束,那你现在随便往里写东西吧,是吧,随便往里写东西啊,写东西一直写到最后e of,直到出现这个字符结束啊,这也是输入追加的追加输入重叠项的一种用法。这个时候。
08:41
时候你可以看一眼这个琴test,你看这不就刚才你写那个东西嘛啊,他一般写的一些,比如写程序啊,你需要跟用户交互是吧,交互的时候这程序段里边一般这么用这么用啊,这样的话,你客户呃,那边输入的东西直接就生成到这个文件里了,你程序里可以再调用它啊,就是这个用的输入重镜像一般没有输出用的多啊,输出这个重镜像用的最多啊,用的最多啊,这是讲这个,那么还有一个概念就是管道啊,管道这个在在这个Linux里边也是经常去用它,经常用什么意思呢?
09:17
啊,管道我们先从理论讲一下,管道是什么呢?就是一个竖线啊,它表示什么呢?管道左边是一个命令,管道右边是一个命令,然后呢,管道在中间起什么作用了呢?它能把左边这个命令的结果集啊,当做右边这个命令的输入参数啊,当做它的输入参数啊光这么讲理论没有意义啊,咱们还是做实验来理解它,你比如说啊,呃,你比如说我这样啊。呃,这个一般这么用,咱们好多时候管道是用来做过滤用的,最多,比如说我看一下ETC下的password,这是一堆文件吧,是吧,这文件里内容我想找一下里边什么呢?比如说咱们前面讲过,GR不是来查找过滤是吧,来查找,比如说我来查找一下里边包含嗯,Root的是吧?行,你看。
10:09
就出来了啊,我们一般用管道拿加grape gra不是前面讲过嘛,是吧,拿它来做过滤,那么这个管道什么作用呢?前面这个命令的结果集就这一堆,当做后边这个命令的输输入的参数就相当于前面这结果集啊这一堆啊。放在这儿了,放在这儿了,当做它的参数了啊,那你原来这命令不就是grape什么什么从哪个文件里嘛,只不过这个文件呢,在这个管道前面替换成这一堆东西了啊,一般咱们管道一般最常用的就是拿他当过滤啊,拿过滤啊它可以同时处理很多呃,并行的这种命令啊,你比如说咱们拿这个就扩展点讲啊,嗯,比如说咱们生产中有什么需求呢?嗯,你比如说啊,我们生产中有这个需求,我们先来VM下这个固下的grab啊,这个这个文件咱们还没有,呃提到是吧,这个grab那文件你看这文件啊,这文件是主程序这么多啊,这个一般咱们后边讲到什么服务啊,ETC下什么S这个这个这这很多服务啊,比如说VMMC这种程序呢,就是大段这种程序里边都会有这种什么的,就是井号开头的啊,这个还真没有,那那咱们还是拿这个这个举例吧下比。
11:28
点Co cg这个井号的呢,表示什么呢?它是一个注释啊,它不参与整个程序的这个这个逻辑,这个运算啊,它不是程序的这个执行部分,它只是一个注释啊,这个对于程序里来说可有可就是说你如果运行角度来说,它不参与运行啊,包括还有什么呢?呃,比如说控行,控行是什么呢?就是它是为了分割的,为了好看啊,它也不参与这个具体程序运行,那真正的程序体是这些东西啊,比如生产一线经常有时候有什么需求,就是说我希望把这程序真正的这个东西提出来,提取出来啊,看看比如说怎么把它真正提取出来,咱们就要大量的使用管道和grab这种组合啊,你比如说我们看一下boot下的grab to下的grab.c这命令啊,我要把这个空行和这个井号开头这些费的东西都去掉是吧?啊,你看现在有多少行啊,怎么统计多少行来着WC啊。
12:28
杠LWC这个命令呢,是用来统计这个文件的啊ETC,你看它就是统计多少行啊,多少行多少个。啊,字节多少个词儿,这个东西一般咱们就看行数用的最多,所以WC-L嘛,是吧,E派错了,看它有多少行,那么这个现在你看这个文件啊,这个不下gra to下gra.cg这个现在是140行,那我想看看里边到底多少行是有用的啊,并且把它提取出来,那这个怎么做呢?怎么做啊,首先我把这文件显示出来,从这里边去过滤,怎么过滤呢?G Rep啊,首先你比如说我要顾虑谁呢?我要顾虑这个井号啊,井号开头的行,那咱们前面讲个正则,咱们讲的是什么叫井号开头行呢,就是尖。
13:17
啊井啊好尖正则表示以什么什么开头嘛,井号开头的好,你看我这找出来了,这些都是以几号开头的好,那我怎么过滤掉它呢?Grape有一个参数叫杠V,表示取反,你刚才不加杠V,找着的是这个井号开头的行,那你加一个杠V呢,就是取反,那就是把井号开头的行都去掉啊,剩下这是主程序和空行是吧?那什么代表空行呢?咱们怎么把空行去掉,那首先肯定还是先把空行找着,然后再把它这个取反,那空行是什么呢?空行就是一开头啊。就结尾这条空行,你看这不就把空行都找出来了吗?你再把这空行再取个反诶好了,剩下这些就是主程序里边没有空行,也没有井号开头的行,那这主程序你看一眼多少行。
14:07
才90多行,才90多行,这是真正有用的程序体啊,当然你结合今天用的东西,你可以把这个结果集呢,生成一个新的文件,比如说你生成到ETC下,叫嗯grab two.cfg的别别别生成在ETC下,就生成在跟下吧,叫grab two.cfg点。BC.backup吧,BC开吧。Bak啊,一般bak啊,你可以把它就是这个纯程序段这个当做一个这个备份集啊,那你再去看这个根下的这个gra什么这个点bak文件,它里边就是纯程序体,纯程序体啊,这文件多少行呢?这文件就肯定就是94行啊,就是这种方法啊,这个在生产一线用的非常多,就是怎么去过滤它,怎么去过滤一些东西啊,用这种管道加gra这种组合啊,非常多啊,咱们后边有很多可以说你要不会用管道很多程序啊,包括很多命令都没法用啊,你比如后边咱们会讲到是不是安装的一些程序是吧,你想查一下我安装了安装没安装某一个服务,比如RPM-QA,这查出我所有的安装那个包是吧,说我有没有安装这个vim啊,你看我一查啊,装了这四个包,包含vim,它是拿来做管道上拿这个做过滤,这个用的非常多,查找啊,这种组合啊,这咱们后。
15:38
后边再说这个命令啊,只是在这给你提一下这管道非常有用,包括这个管道咱们可以结合一下,呃,特殊的指令的一些写法叭,如说咱们对于文件呢,有一些操作,比如说hide啊hide hide是看一个文件的投十行,你看ETC password,我看它的投十行啊,你要说我看太多了,我可以少点,它有一个参数啊,杠N,杠N后边可以加数,比如我就想看头两行杠N2啊,头两行啊呃,这是T,那我跟它对应的是什么呢?是TT也可以看尾,它默认要是不加这杠N2呢,就是看尾部的时航啊,尾部的适航,当然更多的时候呢,我们是习惯用这个T-F这个参数用来监控什么呢?
16:30
Or下log message在什么系统日志啊,这是日志的文件,这个咱们讲到日志那章会详细的讲一用杠F什么意思,它会持续不断的监控尾部试航,如果更新的话,它会一直更新啊,你看现在光标志不放在这儿了,它持续不断的监控这个尾部试航,那比如说我在新开一个窗口,我干嘛呢?你看啊,现在监控到哪儿呢?监控到这个位置了是吧?我把最后这行我标个标个黑啊。啊,标个黑,然后呢,我在这边干嘛呢,我随便,嗯,我把网卡重启一下。
17:07
你看。他这啪啦啪啦啪啦就多了很多信息嘛,是吧,诶这个它持续不断的监控着这些东西,你看啪啦啪啦它出来一堆东西啊。
我来说两句