IO重定向:

  程序=指令+数据,程序自身也存在IO

  可用于IO的设备,参照一切皆文件的哲学思想

    可用于输入的设备:文件(键盘设备、文件系统上的常规文件、网卡等)

    可用于输出的设备:文件(显示器、文件系统上的常规文件、网卡等)

  程序的数据流有以下几种:

    输入数据流:<-- 标准输入(stdin),默认为键盘

    输出数据流:-->标准输出(stdout),默认为显示器

    错误输出流:-->错误输出(stderr),默认为显示器

  文件描述符(file descriptor,fd):

    标准输入:0

    标准输出:1

    错误输出:2

  输出重定向:

    >:覆盖输出(危险操作,不会进行询问)

    >>:追加输出

    set命令(仅对当前shell进程有效):

      ~]# set-C:表示禁止覆盖输出重定向至已存在的文件,若想强制覆盖输出可使用符号:   >| 

      ~]# set+C:关闭上述特性

  错误输出流重定向:

    2>:参照输出重定向

    2>>

  合并正常输出流与错误输出流:

    1):&>,&>>

    2):COMMAND > /PATH/TO/SOMEFILE 2>&1

        COMMAND >> /PATH/TO/SOMEFILE 2>&1

  输出重定向中的特殊设备:/dev/null ——数据黑洞

    它丢弃一切写入其中的数据(但报告写入操作成功)

  输入重定向:

    <:用于某些无法携带参数的命令

      tr命令:translate or delete characters

        转换或删除字符,即把输入的数据当中的字符,凡是在SET1定义范围内出现的,通通对位(一一对应)换位SET2中出现的字符,该操作不会修改源文件,仅在输出显示中做出修改

        使用格式:tr [OPTION]... SET1 [SET2]

        用法1:tr SET1 SET2 < /PATH/TO/SOMEFILE

        用法2:tr -s SET < /PATH/TO/SOMEFILE, 删除文件中存在SET范围内的字符

    <<:Here Document,表示此处创建文件

      用法:~]# cat << EOF   EOF为自定义的结束字符,通常使用EOF

                 ~]# cat  > /PATH/TO/SOMEFILE << EOF

 

管道:

  连接程序,实现将前一个命令的输出直接定向后一个程序当作输入数据流

  使用格式:COMMAND1 | COMMAND2 | COMMAND3 | ...

  tee命令:

    read from standard input and write to standard output and files,从标准输入读数据,但是会输出至文件和标准输出,即两道输出,通常与管道一起使用实现将数据分方向发送

  使用格式:COMMAND | tee /PATH/TO/SOMEFILE