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

关于bash中的数据流重导向

时间:2015-12-10 19:32:08      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

由来:  当我们执行一个指令时,可能会访问档案和执行一些讯息后将一些信息显示到屏幕上,而重定向就是将如此的的讯息导向到其他文件中,事实上,默认的其实就是数据导向到屏幕文件,只是将其重定向到你指定的文件中

输入输出方式: 

  标准输入 (stdin):代码为0,使用<(覆盖标准输入)或<<(累加标准输入)

  标准输出  (stdout):代码为1,使用>(覆盖式标准输出)或>>(累加式标准输出)

  标准错误输出  (stderr):代码为2,使用2>(覆盖式标准错误输出)或2>>(累加式标准错误输出)

  如以下例子:

16:55:28-root-~# cat 1.c > ./rrr 
16:55:59-root-~# cat rrr
#include<stdoio.h>

int main()
{
        printf("hello‘world!");

        return 0;
}


16:56:05-root-~# cat 1.c >> ./rrr 
16:56:28-root-~# cat rrr
#include<stdoio.h>

int main()
{
        printf("hello‘world!");

        return 0;
}


#include<stdoio.h>

int main()
{
        printf("hello‘world!");

        return 0;
}

比较常用的情况是,我们不想讯息显示,可以重定向到/dev/null,将数据丢到数据黑洞。而另一种情况就是,我们想将标准输出和标准错误输出都定向到一个文件时,你可能会使用 >file 2>file,然而如此的结果就是会导致两股数据交叉写入到文件中,此时我们应该用>file 2>&file&>file

输入重导向:

17:34:47-root-~# cat > catfile < ./1.c
17:35:44-root-~# cat catfile
#include<stdoio.h>

int main()
{
        printf("hello‘world!");

        return 0;
}


17:35:48-root-~#

用1.c文件取代手动输入到catfile

17:38:44-root-~# cat > catfile << "eof"
> testing
> stop!!!
> eof

若是用<<时会用右侧的字符控制结束的输入,而用<时要用ctrl+d来结束输入!

关于bash中的数据流重导向

标签:

原文地址:http://www.cnblogs.com/itlxj/p/5036853.html

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