您的位置:首页 > 运维架构 > Shell

关于bash中的数据流重导向

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

输入输出方式: 

  标准输入 (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来结束输入!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: