Linux--标准输入输出、重定向及管道运用

*****************************************************************************************************************************************************************************************   

          标准输入输出:

          Linux的大部分命令都具有标准的输入/输出设备端口,下图列出了标准设备信息:

          名称                      文件描述                     含义                  设备                     说明

         STDIN                          0                           标准输入          键盘                     命令在执行时所要的输入数据通过它来取得

         STDOUT                     1                           标准输出            显示器                命令在执行后的输出结果从该端口送出

         STDERR                     2                           标准错误            显示器                 命令执行时的错误信息通过该端口送出

         系统重定向:

          重定向就是不适用系统的标准输入端口,标准输出端口和标准错误输出端口,而进行重新的指定,所以重定向分为输入、输出和错误重定向,通常情况下重定向到一个文件。

          重定向符号                                         说明

                 <                                                   实现输入重定向。输入重定向不经常使用,因为大多数命令都以参数的形式在命令行上指定输入文件的                                                                         文件名,尽管如此,当使用一个不接受文件名为输入参数的命令,而需要的输入又是在一个已存在的文                                                                        件里,就可以使用输入重定向解决问题。   

                >或>>                                                输出重定向。相对于输入重定向来说,输出重定向更常用,输出重定向使用户能把一个命令的输出重                                                                           定向 到一个文件里,而不是显示在屏幕上,这种功能使用于多种情况,例如,如果某个命令的输出很                                                                          多,在屏幕上不能完全显示,即可把他重定向到一个文件中,稍后在用文本编辑器来打开这个文件     

               2>或>>                                                  错误重定向

               &>                                                    同时实现输出重定向和错误重定向                                             

           a.例如现在需要统计/etc/passwd文件中的行数和字符数,需要用到输入重定向,将命令输入到文件中:

            Linux--标准输入输出、重定向及管道运用

          b.再比如,现在有两个新创建的文件test1,和test2,需求:将test1中的内容重定向到test2中,怎么操作呢??

             1) 在test1编辑"重定向test1文件"内容文字,并保存 

              Linux--标准输入输出、重定向及管道运用

              2)创建test2文件,并将test1中的内容输出重定向到test2中

              Linux--标准输入输出、重定向及管道运用

             我认为,输入重定向是从文件中读取数据,输出重定向是将数据写入到文件中

             3) 输出重定向有两个标志">" 、">>" 这两个有什么区别呢? 

              这两个符号都具有输出重定向的功能,只是输出后的形式有所不同,只有一个">"符号,输出之后,不管输出目标文件中有没有数据,都会将其内容覆盖,只显示最新输出重定向的内容,而使用">>"符号,则会在目标文件原内容的基础上实行拼接,即在原内容的基础上,显示最新输出重定向的内容,不会覆盖。

              例如: 现在查询hello3文件夹中的内容,我想要将查询结果在新创建的test3文件中显示,这时候需要用到输出重定向了,先用">"试试:

               Linux--标准输入输出、重定向及管道运用 

                看图可以知道,使用一个">"完成需求;

              恩,test3文件中有内容了,现在我想将test2文件中的内容"重定向test1文件"也重定向到test3中,

             Linux--标准输入输出、重定向及管道运用

              发现经过以上命令,确实将test2中的内容重定向到test3中,但是,,却将之前查询的内容覆盖掉了,如果我现在既想将test2中的内容重定向到test3中,又不想覆盖test3文件中的的内容,怎么办呢?试试">>"

             我现在将test3内容还原,显示的还是之前的查询结果,再利用test2文件,输出重定向到test3中查看结果:

              Linux--标准输入输出、重定向及管道运用

              现在再看,test3文件中,不仅显示出test2中的内容,test3中的内容也显示出来了。这就是">"与">>"的区别

           只有错误重定向和输出、错误重定向我认为和标准输出重定向就性质和功能上来说,没有明显的区别,只是表达形式不同.......

            

       管道:

       许多Linux命令具有过滤特性,即一条命令通过标准输入端口接受一个文件中的数据,命令执行后产生的结果数据又通过标准输出端口送给后一条命令,作为该命令的输入数据。后一条命令也是通过标准输入端口而接受输入数据。

        管道命令"|" 将这些命令前后连接在一起,形成一条管道线,格式如下:

       命令格式:

           cmd1 | cmd2 

       其中:

       cmd 是命令名  

       | 管道连接符。


         例如:

           a.分屏显示文件文件/etc/passwd的内容

             cat /etc/passwd | more

           b.统计文本文件/etc/passwd的行数,字数和字符数

               cat /etc/passwd | wc 

           c. 查找是否存在ceshi 的用户账号

               cat  /etc/passwd | grep ceshi

          d. 查看系统是否安装了apache软件包

               rpm -qa | grep http

        上面列出的只是一些运用管道连接符,实现的简单的查询,复杂的会在后续的文章里继续说明!

     GOOD MORNING !!!

*****************************************************************************************************************************************************************************************