• Linux 重定向与管道


    Linux —— 重定向与管道

    系统的输入输出包括:
    默认输入设备:标准输入,STDIN,描述符为0
    默认输出设备:标准输出,STDOUT,描述符为1
                  标准错误输出,STDERR,描述符为2
                 
    标准输入,标准输出,标准错误输出是三个不同的数据流
                 
    系统默认标准输入是从键盘读取,标准输出和标准错误输出是输出到显示器

    Linux中I/O重定向:
        输出重定向,
        >:覆盖输出,作为输出目标的文件原有内容会被覆盖
        示例:
        root@ubuntu:/home/linlin/linlin/test# echo 'The dog is so cute'
      The dog is so cute
      root@ubuntu:/home/linlin/linlin/test# echo 'The dog is so cute' > file
      root@ubuntu:/home/linlin/linlin/test# cat file
      The dog is so cute
      覆盖
      root@ubuntu:/home/linlin/linlin/test# echo 'The cat is so smart' > file
      root@ubuntu:/home/linlin/linlin/test# cat file
      The cat is so smart

        >>:追加输出,保留作为输出目标的原有文件
        示例:
        root@ubuntu:/home/linlin/linlin/test# echo 'The dog is so cute' >> file
      root@ubuntu:/home/linlin/linlin/test# cat file
      The cat is so smart
      The dog is so cute
       
        在使用输出重定向时,可能由于某个输出目标文件内容很重要,这时就需要使用追加
        输出,但在实际使用过程中,很容易错把>当做>>使用,为了防止这个错误,我们可以
        使用set命令
        set:shell内置功能开关
        set -C:禁止对已存在文件使用覆盖重定向
        强制覆盖输出使用 >|
        set +C:允许对已存在内容重定向
        root@ubuntu:/home/linlin/linlin/test# set -C
      root@ubuntu:/home/linlin/linlin/test# echo 'The cat is so smart' > file
      bash: file: cannot overwrite existing file
      
      tee:从标准输入读取数据,输出到标准输出,并保存至文件
      
      2>:标准错误输出重定向
      2>>:标准错误追加重定向

        &>:重定向标准输出和标准错误输出到同一个文件
        注意 &>> 不支持
       
        <:输入重定向
        <<结束符:表示在此处生成文档,当输入为结束符时表示输入结束
        here document具体解释https://linux.die.net/abs-guide/here-docs.html
       
       
    管道:把一个命令的输出作为另一个命令的输入
    体现了Linux的基本思想之一:组合小命令完成复杂任务
    使用格式:
        命令1 | 命令2 | ......
        例如,取出某文件的倒数第3行
        root@ubuntu:/home/linlin/linlin/test# cat file
      10086
      213
      3134
      21343452
      2341
      root@ubuntu:/home/linlin/linlin/test# tail -3 file | head -1
      3134

    构造管道时,应该试着让每个阶段的数据量变得更少,换句话说,如果你有两个要完成的步骤与先后次序无关,你可以
    把让数据变少的那一个步骤放在管道的前面,这么做可以提高脚本的整体性能,应为此时系统只需要在两个程序中移动
    少的数据量,每个程序要做的是也比较少。


     

  • 相关阅读:
    opencv目录
    qt5-编译并添加opencv库
    java版gRPC实战之二:服务发布和调用
    java版gRPC实战之一:用proto生成代码
    github搜索技巧小结
    client-go实战之五:DiscoveryClient
    client-go实战之四:dynamicClient
    client-go实战之三:Clientset
    client-go实战之二:RESTClient
    client-go实战之一:准备工作
  • 原文地址:https://www.cnblogs.com/lnlin/p/6958761.html
Copyright © 2020-2023  润新知