标准错误
本课属于 Coddy Terminal 学习旅程的“基础知识”单元。第 41 课,共 82 课。
第三个也是最后一个数据流是标准错误,缩写为 stderr。这个数据流专门用于错误消息和警告,并将它们与正常输出分开。
命令执行失败时,错误消息会发送到标准错误,而不是标准输出:
ls nonexistent_folder你看到的错误消息通过 stderr 输出。这种分离很重要,因为你可以将错误重定向到与常规输出不同的位置。
要重定向标准错误,请使用 2>,而不是 >:
ls nonexistent_folder 2> errors.txt2 指的是 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 所在的位置,把所有内容合并到一个文件中。
挑战
简单使用 2> 运算符将错误消息重定向到文件。按顺序运行以下两条命令:
- 尝试使用
ls列出名为missing_folder的文件夹,并将错误消息重定向到名为errors.txt的文件 - 使用
cat显示errors.txt的内容
提示:格式为
ls foldername 2> filename。错误消息会写入文件,而不会显示在屏幕上。使用cat确认错误消息已被捕获。
亲手试试
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Terminal 在线编辑器