Linux 输入输出重定向详解

您是否正在寻找与 Linux 输入输出重定向相关的信息?那么,请继续阅读。那么,什么是重定向?重定向是 Linux 的一项功能。借助它,您可以更改标准 I/O 设备。在 Linux 中,当您输入一个命令作为输入时,您会收到一个输出。这是 Linux 的基本工作流程。

用于输入命令的标准输入或 stdin 设备是键盘,标准输出或 stdout 设备是您的终端屏幕。通过重定向,您可以更改标准输入/输出。从本文中,让我们了解 Linux 输入输出重定向是如何工作的。

输入输出重定向中的标准流

Linux 的 bash shell 有三个标准输入输出重定向流:1) 标准输入或 Stdin,2) 标准输出或 Stdout,以及 3) 标准错误或 Stderr。

标准输入流表示为 stdin (0)。bash shell 从 stdin 接收输入。键盘用于提供输入。标准输出流表示为 stdout (1)。bash shell 将输出发送到 stdout。最终输出会显示在显示屏上。这里,012 被称为文件描述符 (FD)。在以下章节中,我们将详细了解文件描述符。

文件描述符

在 Linux 中,一切皆文件。目录、常规文件,甚至设备都被认为是文件。每个文件都有一个关联的数字。这个数字称为文件描述符或 FD。

有趣的是,您的终端屏幕也有一个明确的文件描述符。每当执行特定程序时,其输出都会发送到您屏幕的文件描述符。然后,您可以在显示屏上看到程序输出。如果程序输出被发送到您打印机的 FD,则输出将被打印出来。

012 分别用作 stdinstdoutstderr 文件的文件描述符。

输入重定向

<”符号用于输入或 stdin 重定向。例如,Linux 的 mail 程序从您的 Linux 终端发送电子邮件。

您可以使用标准输入设备键盘输入电子邮件内容。但是,如果您想将文件附加到电子邮件,请使用 Linux 的输入重定向功能。以下是使用 stdin 重定向运算符的格式。

Mail -s "Subject" to-address < Filename

这将把一个文件附加到您的电子邮件,然后该电子邮件将被发送给收件人。

输出重定向

>”符号表示输出重定向。以下示例可帮助您理解其功能。

ls -al > listings

在上面的例子中,输出命令 ls-al 将被重定向到文件“listings”,而不会显示在您的屏幕上。

注意:如果已经存在同名的文件,则上述命令会删除该文件内容,并且该文件会被覆盖。如果您不想覆盖文件,并且想要将内容添加到现有文件中,请使用“>>”运算符。使用“>&”运算符将程序输出从一个文件重定向到另一个文件。

您不仅可以将标准输出重定向到文件,还可以重定向到设备。

$ cat music.mp3 > /dev/audio

在上面的例子中,cat 命令用于读取文件 music.mp3。它将输出发送到音频设备 /dev/audio。如果您的 PC 上有正确的声音配置,则上述命令会播放音乐文件 music.mp3。

错误重定向

错误重定向是 Linux 中非常流行的功能。很多时候,您在运行代码时会收到大量错误。错误重定向意味着将这些错误发送到特定文件而不是屏幕。默认情况下,错误流会显示在您的屏幕上。

当您搜索文件时,您经常会收到权限被拒绝错误。这些错误对您的搜索没有帮助。当 shell 脚本被执行时,不希望看到错误消息使正常输出变得混乱。作为解决方案,使用了这些错误的重定向。

$ myprogram 2>errorsfile

在上面的例子中,名为“myprogram”的程序将被执行。“2>”将错误输出重定向到名为“errorfile”的特定文件。因此,程序输出不会因错误而变得混乱。您也可以使用其文件描述符 2 执行错误重定向。

结论

通过本文,我们了解了 Linux 输入输出重定向的流。我们讨论了什么是输入重定向,什么是输出重定向,以及什么是错误重定向。希望您觉得本文有用。

Suparna 是一位自由撰稿人,撰写关于 Linux 的文章,包括技巧、窍门和操作指南。

加载 Disqus 评论