文章目录
  1. 1. 0x1 &含义
  2. 2. 0x2 特殊用法: &> filename
  3. 3. 0x3 调用顺序
  4. 4. Reference:

在Segmentfault中看到一个同样的问题,作为笔记记录下来

0x1 &含义

重定向> filename 2&>1表示将前面的正确/错误输入都传给后面的filename, 但是&这个概念就不是很清楚

xelz
而2>&1代表将stderr重定向到文件描述符为1的文件(即/dev/stdout)

所以&就是为了标志1不是一个文件名而是一个文件描述符

0x2 特殊用法: &> filename

整体使用 &> === >&
等价于> filename 2&>1

0x3 调用顺序


find / -name ‘desktop’ > tmpfile 2>&1

文件内容:stdout+stderr
先将stdout输出到file,此时的file就是该shell的stdout,之后再将stderr(2)重定向到stdout(1)


find / -name ‘desktop’ 2>&1 > tmpfile2

文件内容:stdout
先将要输出到stderr的内容重定向到stdout,此时会产生一个stdout的拷贝,作为程序的stderr,而程序原本要输出到stdout的内容,依然是对接在stdout原身上的,因此第二步重定向stdout,对stdout的拷贝不产生任何影响

Reference:

https://segmentfault.com/q/1010000002454596

文章目录
  1. 1. 0x1 &含义
  2. 2. 0x2 特殊用法: &> filename
  3. 3. 0x3 调用顺序
  4. 4. Reference: