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呢? 展开
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呢? 展开
展开全部
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不会得到合并的标准输出和标准错误信息
这代表把标准输出和标准错误重定向合并到文件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 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
展开全部
ls a.txt b.txt 1>file.out 2>file.out
这样写的话你没考虑stdout和stderr的缓冲。
stdout是行缓冲的,他的输出会放在一个buffer里面,只有到换行的时候,才会输出到屏幕;而stderr是无缓冲的,会直接输出。
重定义到文件后,stdout就变成全缓冲(而不是行缓冲),得等到缓冲区满(一般8192B)才会实际写入;而stderr不管怎么样重定向,都是无缓存,向其输入数据后,马上实际写入。
这样有可能导致file.out文件内容错乱,stdout和stderr内容前后顺序颠倒
这样写的话你没考虑stdout和stderr的缓冲。
stdout是行缓冲的,他的输出会放在一个buffer里面,只有到换行的时候,才会输出到屏幕;而stderr是无缓冲的,会直接输出。
重定义到文件后,stdout就变成全缓冲(而不是行缓冲),得等到缓冲区满(一般8192B)才会实际写入;而stderr不管怎么样重定向,都是无缓存,向其输入数据后,马上实际写入。
这样有可能导致file.out文件内容错乱,stdout和stderr内容前后顺序颠倒
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询