前一章讨论了“输出重定向、输入重定向、文件描述符 (FD)”,在本教程中,您将学习最后一章“错误重定向、为什么错误重定向?”。raksmart美国服务器分享Linux/Unix 输入输出重定向(二)
错误重定向
每当您在终端执行程序/命令时,始终打开 3 个文件,即标准输入、标准输出、标准错误。
每当运行程序时,这些文件始终存在。如前所述,文件描述符与这些文件中的每一个相关联。推荐阅读:《Linux/Unix 输入输出重定向(一)》
文件 文件描述符
标准输入 STDIN 0
标准输出 STDOUT 1
标准错误 STDERR 2
默认情况下,错误流显示在屏幕上。错误重定向是将错误路由到屏幕以外的文件。
为什么错误重定向?
错误重定向是 Unix/Linux 非常流行的特性之一。
经常使用 UNIX 的用户会认为许多命令会给您带来大量错误。
例如,在搜索文件时,通常会出现权限被拒绝错误。这些错误通常对搜索特定文件的人没有帮助。
在执行 shell 脚本时,您通常不希望错误消息弄乱正常的程序输出。
解决方案是将错误消息重定向到文件。
示例 1
$ myprogram 2>errorsfile
上面我们正在执行一个名为 myprogram 的程序。
标准错误的文件描述符是 2。
使用“2>”我们将错误输出重定向到一个名为“errorfile”的文件
因此,程序输出不会因错误而杂乱无章。
示例 2
这是另一个使用 find 语句的示例 –
find . -name ‘my*’ 2>error.log
使用“find”命令,我们正在搜索“.” “name”以“my”开头的文件的当前目录
示例 3:让我们看一个更复杂的示例,
服务器管理员经常列出目录并将错误和标准输出存储到文件中,以便以后处理。这是命令。
ls Documents ABC> dirlist 2>&1
这里,
它将一个文件的输出写入另一个文件的输入。2>&1 表示STDERR重定向到STDOUT的目标(即文件目录列表)
我们将错误输出重定向到标准输出,而标准输出又被重定向到文件目录列表。因此,两个输出都写入文件 dirlist
概括
Linux 中的每个文件都有一个与之关联的对应文件描述符
键盘是标准输入设备,而屏幕是标准输出设备
“>”是输出重定向操作符。“>>” 将输出附加到现有文件
“<”是输入重定向操作符
“>&”将一个文件的输出重定向到另一个文件。
您可以使用相应的文件描述符 2 重定向错误。推荐相关阅读:《Linux / Unix 中的文件权限如何读取、写入和更改?(三)》