码迷,mamicode.com
首页 > 其他好文 > 详细

I/O重定向以及管道

时间:2016-08-01 23:09:05      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:i/o重定向 管道

I/O重定向

    通常对于程序来讲,输入输出可以使键盘、鼠标、显示器等;当然有时候输入的数据是程序自身内部所具有的。同样,输出的数据也有显示器或文件,因此我们到底从哪里输入数据,产生的数据又存放在哪里。


程序:指令+数据

读入数据:Input

输出数据:Output

标准输入:键盘

标准输出:显示器

程序的数据流有三种:

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

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

    错误输出流:--> 标准输出(stdout),显示器


fd(File descriptor):即文件描述符,内核利用fd来访问文件

    标准输入:键盘,0

    标准输出:显示器,1

    标准错误输出:显示器,2


输出重定向:COMMAND > NEW_POS 或 COMMAND >> NWE_POS

    >:覆盖重定向,会将目标文件内容覆盖

技术分享

    >>:追加重定向,将输出的内容追加至目标文件尾部

技术分享


set -C:禁止输出重定向覆盖文件内容

    强制覆盖,可使用>|

技术分享

set +C:允许输出重定向覆盖文件内容

    

错误输出重定向:COMMAND 2> NEW_POST 或 COMMAND 2>> NEW_POS

    2>:覆盖错误输出重定向,覆盖指定的文件内容

    2>>:追加覆盖,将错误输出内容追加至文件尾部

技术分享


合并标准输出和错误输出

    (1)&>:覆盖标准输出和错误输出,覆盖指定文件内容

技术分享

      &>>:追加输出

技术分享

    (2)2>&1:

技术分享

技术分享


输入重定向:<    COMMAND < INPUT_FILE

    把另一个文件的内容当做程序的输入

技术分享


两个特殊文件:

    /dev/null:数据黑洞,可将所有无关紧要要的输出信息输出至此设备当中,一般在编写脚本时用的比较多

    /dev/zero:吐零机,可无限输出000数据,一般用于生成文件 或覆盖文件


tr命令:删除或转换字符

    tr [OPTIONS...] SET1 [SET2]

        -c:取字符集的补集

        -d:删除SET1定义的字符

        -s:把连续的字符显示一次

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

技术分享

技术分享

Here Document:<<

    cat << EOF

    cat << EOF > aa.txt

技术分享


管道:|

    将一个命令的输出当做下一条命令的输入,实现命令链接

    COMMAND1 | COMMAND2 | COMMAND3 |...

技术分享将/etc/passwd文件内容转换为大写并输出至aa.txt文件中


tee命令:将标准的输入和标准输出和文件

    COMMAND | tee /PATH/TO/SOMEFILE

技术分享将输入的文档输出至标准输出并保存至aa.txt文件中


    

      

I/O重定向以及管道

标签:i/o重定向 管道

原文地址:http://zhaizhai.blog.51cto.com/11881047/1833177

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!