在 shell 程式中,最常使用的 FD (file descriptor) 大概有三个, 分别是:
0: Standard Input (STDIN) <
1: Standard Output (STDOUT) >等同1>
0: Standard Input (STDIN) <
1: Standard Output (STDOUT) >等同1>
2: Standard Error Output (STDERR) 2>
在标准情况下, 这些FD分别跟如下设备关联:
stdin(0): keyboard 键盘输入,并返回在前端
stdout(1): monitor 正确返回值 输出到前端
stderr(2): monitor 错误返回值 输出到前端
>&和&>
- 2>&1 意思是把 标准错误输出 重定向到 标准输出.
- 1>&2 意思是把标准输出重定向到标准错误输出。
- &>file 意思是把 标准输出 和 标准错误输出 都重定向到文件file中
eg:grep da * > greplog1
grep da * > greplog2 1>&2
grep da * > greplog3 2>&1 //grep da * 2> greplog4 1>&2 结果一样
#查看greplog1会发现里面只有正常输出内容
#查看greplog2会发现里面什么都没有
#查看greplog3会发现里面既有正常输出内容又有错误输出内容