技术解析

重定向的问题
0
2021-07-02 21:58:16
idczone
cmd >file 2>&1
cmd 2>&1 >file
这两条指令的执行结果为什么不一样,命令的细节是什么?
等同于:
cmd 1>file 2>&1
cmd 2>&1 1>file

- cmd
stdout -> 终端
stderr -> 终端
- cmd >file 2>&1
先把 stdout(就是 1) dup 到打开的 file 上,这时 stdout(1) 指向 file: stdout -> file
然后把 stderr(2) dup 到 1 上,因为 1 已经是 file ,所以两个都去了 file : stderr -> stdout 即 stderr -> file

- cmd 2>&1 >file
先把 stderr(2) dup 到 stdout 上, stderr -> stdout 即 stderr-> 终端
再把 stdout(1) dup 到 file 上, stdout-> file
结果是, stderr 去了原来的 stdout (终端), stdout 去了 file 里

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服