Standard Error 标准错误

程序输出错误信息的默认通道,简称 stderr。 Linux/Unix 文件描述符是 2

为什么 stderr 跟 stdout 分开

让你能把”正常输出”和”错误信息”分别处理:

# 把正常输出存文件,错误打到屏幕
ls > out.txt 2>&1            # 都重定向到 out.txt
ls > out.txt 2>err.txt       # 分别重定向
ls 2>/dev/null               # 静音错误
ls > /dev/null               # 静音正常输出

如果两者混在一起,你 grep 输出时就找不准什么是结果什么是 warning。

跟 stdin、stdout 一组

名字FD
stdin0
stdout1
stderr2

安全场景

写脚本时遵循约定:

  • 正常结果 → stdout(让管道使用)
  • 报错 / 进度 → stderr(不污染管道)

很多新手脚本把所有东西都 echo 进 stdout,导致组合时各种 bug。