标准错误输出默认显示在终端,可通过重定向保存。1. 使用2>将stderr写入文件,如command 2> error.log;2. 分别保存stdout和stderr,用> output.log 2> error.log;3. 合并输出用> all.log 2>&1或&> all.log;4. 丢弃错误信息用2> /dev/null。注意顺序与文件描述符使用。

在Linux中,标准错误输出(stderr)默认显示在终端上。如果想把它保存到文件或与其他输出合并,就需要使用错误输出重定向。掌握这些方法能帮助你更好地管理程序运行时的错误信息。
1. 单独重定向错误输出
使用 2> 可以将标准错误输出重定向到指定文件,而不会影响正常输出(stdout)。
-
command 2> error.log—— 错误信息写入 error.log,正常输出仍显示在屏幕 -
ls /wrong/path 2> error.log—— 执行出错时,错误提示被记录到文件
2. 正确输出和错误输出分别保存
如果你想把标准输出和标准错误分开保存,可以同时使用 > 和 2>。
-
command > output.log 2> error.log—— 正常结果进 output.log,错误进 error.log -
grep "text" *.txt > found.txt 2> notfound.log—— 匹配内容保存,找不到文件的报错另存
3. 合并标准输出和错误输出
使用 &> 或 2>&1 可以把 stdout 和 stderr 一起重定向。
-
command > all.log 2>&1—— 先重定向 stdout 到 all.log,再把 stderr 跟过去 -
command &> all.log—— 更简洁的写法(在bash中有效),所有输出都写入文件
注意:顺序很重要,> file 2>&1 是正确的,反过来会失效。
4. 丢弃错误信息
如果你不关心错误提示,可以把它们重定向到 /dev/null,相当于“黑洞”。
-
command 2> /dev/null—— 屏蔽所有错误信息 -
command > output.log 2> /dev/null—— 只保留正确结果
基本上就这些常用方式。根据需要选择分开处理还是合并输出,关键是记住文件描述符:1代表stdout,2代表stderr。操作不复杂但容易忽略细节,比如重定向顺序。









