重定向和管道符

1、重定向

  程序=指令+数据

      命令  变量

  在程序中,数据如何输入?又如何输出?

  stdout, stdin, stderr的中文名字分别是标准输出,标准输入和标准错误

  数据输入:键盘 ---(键盘并不是唯一的,但键盘是标准输入)

       --stdin

       echo "123456" | password --stdin "username"

       while line;do

          循环体

       done < /etc/passwd

  数据输出:显示器 ---标准输出(并不是唯一的输出方式)

  ls /etc/ > a.txt 把显示的东西放到a.txt里。

  fd 文件标识符0-9  --相当于给文件分类;

    常用 0 1 2

    0--标准输出

    1--标准输入

    2--错误输入输出

  常见重定向符号

    1、标准输出

    >     覆盖重定向、非常危险

    set -C去掉覆盖重定向的功能  +C是恢复   >|  是强制重定向

    >>    追加重定向 追加到文件的最后  (more less 看文件安空格下一页)

    2、标准输入

    <          a<b(把b的内容交给a)       tr  替换文件内容

                     tr  set1 [set2]   <file.txt

    <<       cat   多行数据同时输入

        cat  >> a.txt<<EOF

        >1

        >2

        >3

        >EOF

    3、错误输出

    2>

    扩展:不需要输出内容,只需要输出状态;echo $?

    2>>

    

     &>  &>>   ==2&>1

         ls /etc/ &> /dev/null  不管前面的执行结果是否正确执行后面的

2、管道  --tee

    command | command2 | command3 |... ...

    前一个命令的执行结果交给后一个命令来执行;

    [linux思想:结合小功能实现大功能]

      tee   一路输入,两路输出

          tee /tmp/tee.out   //如果没有文件,会创建,默认如果文件存在有内容,会覆盖;

原文地址:https://www.cnblogs.com/yjkyjk/p/11314236.html