>和>>的区别:

参考大佬简单明了总结:点我传送

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解释:

参考:Linux中标准输入输出解释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结合就代表标准输出了,就变成错误重定向到标准输出.

Logo

更多推荐