>和>>的区别:
参考大佬简单明了总结:点我传送
Linux 中,>和>> 都是将内容重定向输出到指定文件中,区别在于:
">" :将正确命令信息输出到文件中(覆盖原内容)
"&>":将正确的和错误信息都输出到文件中
">>":将命令信息追加到文件中(原文件末尾继续追加内容)
"<" :和">"相反,表示输入
使用Linux命令实现A.txt与b.txt合并为c.txt。c.txt不存在,合并完要删除A.txt与b.txt。
cat A.txt >> c.txt cat b.txt>>c.txt rm A.txt rm b.txt
示例如下:
编辑
执行效果:
第1句命令,会创建test.txt文件,并将abc写到文件中;
第2句命令,会在文件末尾,追加写入内容123;
第3句命令,会覆盖原有文件,重新写入内容def。
2>&1解释:
2>&1 :意思就是将标准错误也输出到标准输出当中
- 0:标准输入stdin
- 1:标准输出stdout(重定向符号>默认是1)
- 2:标准错误输出
示例:
ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1;
ls xxx 2>1测试,没有xxx这个文件的错误输出到了1中;
ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了;
ls xxx >out.txt 2>&1, 实际上可换成 ls xxx 1>out.txt 2>&1;重定向符号>默认是1,错误和输出都传到out.txt了。
试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;
换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.