一个简单的关于命令行重定向的记录(command > file 2 > &1的解释)

首先2 > &1等价于dup2(1,2);执行之后也就是2共享1的文件表。

1,command > file 2 >&1

等价于:

首先command > file 2 >&1,等价于command 1>file 2 > &1

具体例如:a.out 1 > a.txt 2>&1

open(a.txt) == 3;

dup2(3,1);关闭1,将3指向的内容复制到1一份,即就是1目前的里面指向的内容也指向了3,也就是重定向了1到3,即就是

重定向了标准输出(1)到文件描述符3(a.txt).

注:建议去看一下dup2函数的功能以及大概了解下unix是如何进行文件管理的。

dup2(1,2);关闭2,将1指向的内容复制到2一份。

 

2,command  2>&1 >file 等价于 a.out 2>&1 1>a.txt

dup2(1,2);

open(a.txt) == 3;

dup2(3,1);

下面是转的一段话:

平时经常混淆这两个写法,一段时间不用就忘记了,写个简单的blog记一下:
cmd>file 2>&1:
1)cmd>file: stdout-->file,stdout重定向到file,将标准输出信息写入到file文件;
2)2>&1:   1表示stdout,2表示stderr,stderr重定向到stdout,由于之前已经将stdout已经重定向到file,所以stderr信息也会写入到file;
该命令把stdout,stderr都写入到file。

cmd 2>&1 >file:
1)2>&1: stderr-->stdout,stderr重定向到stdout,将错误信息写入到stdout中;
2)>file :  这里>file相当于 cmd>file,也就是stdout>file,将stdout重定向到file; 
该命令只是把stdout重定向到file,并没有把stderr信息写入到file。
--------------------- 
原文链接:https://blog.csdn.net/LIFEXX/article/details/50405346 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值