08、I\O重定向及管道

1.程序的数据流有三种:
                输入的数据流;<-- 标准输入(stdin),键盘;
                输出的数据流:--> 标准输出(stdout),显示器;
                错误输出流:  --> 错误输出(stderr),显示器;

2.fd: file descriptor,文件描述符,是动态的;打开文件后会分配一个临时文件描述符;每个运行的进程都会对其打开的文件都会分配以下这三个临时文件描述符,用一个整数表示,对每个程序而言打开的文件都会有这三个数据流;        
        stdin:0
        stdout:1
        stderr:2

3.IO重定向:
                   1.输出重定向:>
                            特性:覆盖输出
                      输出重定向:>>
                            特性:追加输出
                    注:# set -C,禁止覆盖输出重定向至已存在的文件;此时可使用强制覆盖输出:>|
                           # set +C,关闭上述特性
                    错误输出流重定向:2>, 2>>
                    合并正常输出流和错误输出流的两种方式:
                               (1) &>, &>>
                               (2) COMMAND > /path/to/somefile 2>&1
                                    COMMAND >> /path/to/somefile 2>&1
                     2.输入重定向:<
                                COMMAND < /PATH/FROM/SOMEFILE
                     3.字符转换:tr命令:
                                                   tr [OPTION]... SET1 [SET2]
                      用法1: 把输入的数据当中的字符,凡是在SET1定义范围内出现的,通通对位转换为SET2出现的字符
                               tr SET1 SET2 < /PATH/FROM/SOMEFILE
                      用法2:删除字符集1中出现的字符
                               tr -d SET1 < /PATH/FROM/SOMEFILE

                       注意:不修改原文件
                       结束标记(Here Document,此处创建文档):<<
                       COMMAND << STRING
                       在此处创建文档;遇到STRING结束,STRING可自定义但不能与输入内容相同,一般为END|EOF(结束符);                                         用法:
                             COMMAND(cat) << EOF
                            覆盖:COMMAND > /PATH/TO/SOMEFILE << EOF
                            追加:COMMAND >> /PATH/TO/SOMEFILE << EOF
4.管道:连接程序,实现将前一个命令的输出直接定向后一个程序当作输入数据流
             COMMAND1 | COMMAND2 | COMMAND3 | ...
              tee命令:从标准输入读数据,并写到标准输出和文件中,即两路输出;
                    COMMAND | tee /PATH/TO/SOMEFILE   
                     使输出即输出到文件一份,又输出到屏幕上一份;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值