Linux的标准I/O和管道

标准输入输出与管道   

  1、标准输入和输出

            程序:指令+数据

                       指令:计算、加减乘除

                       数据:输入数据、输出数据

  2、在Linux中每一个打开的文件都会分配一个当前进程中唯一的文件描述符,用来标识文件的状态

              fd:file descripor

              image.png

              image.png

 3、Linux提供给程序的有三种I/O设备

                1、标准输入(stdin)      -0 默认接受来自键盘的输入

                2、标准输出 (stdou)    -1 默认输出到终端窗口

                3、标准错误   (stderr)  -2 默认输出到终端窗口

4、I/O 重定向:改变默认的输入、输出的位置,重新定位到其他的地方

             1、将stdin    stdout   stderr重新定位到文件中

                    >  stdout  的重新定位

                    2>    stderr 的重新定位

                    &>    将所有的输出重新定位

            image.png

                    使用了 >  stdout  的重新定位 ,执行结果,将不会输出到,终端上,被重定向到11.txt中,如果该文件不存在,则会被创建


                     image.png

                  一个错误的命令,使用的是 2 ,默认输出到终端,可以使用  2>重定向到22.txt 文件中,终端就不会打印错误的信息

                  


                如果一个命令中既有标准输出、又有标准错误输出,则使用   &> 定位

                image.png  

                注意使用    >  

                                          2> 

                                           &> 

                     这是都是覆盖文件,如果想要追加这则使用

                          >>  

                                          2> >

                                           &> >

        2、将标准输入、与标准错误重新全部定位到文件中,除了使用    &>>,还可以如下使用方式,但是注意顺序很重要


                    image.png

        

    

                                

  4、tr 命令的使用

                用途: 转换和删除字符

                语法:tr [ - options ....]   set1  set2

                            -d --delete:删除所有属于第一字符集的字符

                            image.png

                            -s --squeeze-repeats:把连续重复的字符以单独一个字符表示

                            image.png

                            -t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符

                                image.png

                                -c –C --complement:取字符集的补集

                                image.png

                            


    5、从文件中导入输入流

                 1、使用<来重定向标准输入

                    2、某些命令能够接受从文件中导入的STDIN

                 3、如cat 、tr等

                image.png

                image.png

                 4、可以多行一起发送给STDIN  ,使用 << EOF终止词    

                        image.png         

      6管道

           1、 管道(使用符号“|”表示)用来连接命令

            2、语法:cammand1 | cammand2 | cammand3

            3、将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN

            4、STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现

            image.png

            image.png


    7、重定向到多个目标(tee)

        用法: cammand1 | tee file | cammand2

        作用:可以将上一个命令标准输出流定位到文件中,又可以将其传中下一个命令作为其标准的输入流

        image.png


猜你喜欢

转载自blog.51cto.com/12302981/2154730