三条流,一枚状态

选择命令情景和重定向方式,再运行模拟。观察 stdout、stderr 与退出状态为什么可以同时给出不同信息。

bash -c "printf '普通结果\n'; printf '诊断信息\n' >&2; exit 7" >result.txt 2>error.log

命令进程

0stdin:终端输入
1stdout:正常数据
2stderr:诊断数据

可观察结果

result.txt
尚未运行
error.log
尚未运行
管道下游接收
尚未运行
父 Shell 收到的退出状态
调整去向并运行。注意:状态不会被重定向到文件,它由父 Shell 单独收集。
stdin 0 stdout 1 stderr 2 退出状态