Linux:关于输出重定向 这里的2>&1是什么意思呢?

[root@redhatbox]#lsa.txtb.txt1>file.out2>&1将lsa.txtb.txt的正确执行结果输出到file.out文件中,而错误结果输出... [root@redhat
box]# ls a.txt b.txt 1>file.out 2>&1

将ls a.txt b.txt的正确执行结果输出到file.out文件中,而错误结果输出到通道1中,而通道1是输出到file.out中,所以最后错误信息和正确信息都会输出到file.out中对吗?
那这么写多麻烦啊?为什么不直接写ls a.txt b.txt 1>file.out 2>file.out呢?
展开
 我来答
nomgfu
2013-08-26 · TA获得超过5732个赞
知道大有可为答主
回答量:4820
采纳率:70%
帮助的人:3081万
展开全部
ls a.txt b.txt 1>file.out 2>&1
这代表把标准输出和标准错误重定向合并到文件file.out
简化的写法是ls a.txt b.txt &>file.out

1>file.out 2>file.out不会得到合并的标准输出和标准错误信息
追问
大哥 1>file.out 2>file.out为啥不行呢?把信息都追加到file.out为啥不行呢?有什么说道吗?
追答
如果你的命令执行结果同时有标准输出和标准错误信息,那么1>file.out 2>file.out得到的file.out只包含标准输出或者标准错误,因为后面重定向输出到file.out的信息会覆盖原来的file.out信息。

你自己实践对比一下就知道有什么不同了
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
大大虫
高粉答主

推荐于2017-11-29 · 醉心答题,欢迎关注
知道大有可为答主
回答量:4.2万
采纳率:76%
帮助的人:1.4亿
展开全部
ls a.txt b.txt 1>file.out 2>file.out
这样写的话你没考虑stdout和stderr的缓冲。
stdout是行缓冲的,他的输出会放在一个buffer里面,只有到换行的时候,才会输出到屏幕;而stderr是无缓冲的,会直接输出。
重定义到文件后,stdout就变成全缓冲(而不是行缓冲),得等到缓冲区满(一般8192B)才会实际写入;而stderr不管怎么样重定向,都是无缓存,向其输入数据后,马上实际写入。
这样有可能导致file.out文件内容错乱,stdout和stderr内容前后顺序颠倒
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式