Menu
CoddyTech

标准错误

本课属于 Coddy Terminal 学习旅程的“基础知识”单元。第 41 课,共 82 课。

第三个也是最后一个数据流是标准错误,缩写为 stderr。这个数据流专门用于错误消息和警告,并将它们与正常输出分开。

命令执行失败时,错误消息会发送到标准错误,而不是标准输出:

ls nonexistent_folder

你看到的错误消息通过 stderr 输出。这种分离很重要,因为你可以将错误重定向到与常规输出不同的位置。

要重定向标准错误,请使用 2>,而不是 >:

ls nonexistent_folder 2> errors.txt

2 指的是 stderr 的文件描述符编号(stdout 是 1,stderr 是 2)。这条命令会将错误消息保存到 errors.txt,同时让你的终端保持干净。

你可以将两个流分别重定向到不同的文件:

ls existing_folder nonexistent_folder > output.txt 2> errors.txt

成功的输出会写入 output.txt,而错误会写入 errors.txt。要将两个流都发送到同一个文件,请使用 2>&1:

ls existing_folder nonexistent_folder > all_output.txt 2>&1

这会将 stderr 重定向到 stdout 所在的位置,把所有内容合并到一个文件中。

challenge icon

挑战

简单

使用 2> 运算符将错误消息重定向到文件。按顺序运行以下两条命令:

  1. 尝试使用 ls 列出名为 missing_folder 的文件夹,并将错误消息重定向到名为 errors.txt 的文件
  2. 使用 cat 显示 errors.txt 的内容

提示:格式为 ls foldername 2> filename。错误消息会写入文件,而不会显示在屏幕上。使用 cat 确认错误消息已被捕获。

亲手试试

终端
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Terminal 在线编辑器