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。最终输出会显示在显示屏上。这里,0
、1
和 2
被称为文件描述符 (FD)。在以下章节中,我们将详细了解文件描述符。
文件描述符
在 Linux 中,一切皆文件。目录、常规文件,甚至设备都被认为是文件。每个文件都有一个关联的数字。这个数字称为文件描述符或 FD。
有趣的是,您的终端屏幕也有一个明确的文件描述符。每当执行特定程序时,其输出都会发送到您屏幕的文件描述符。然后,您可以在显示屏上看到程序输出。如果程序输出被发送到您打印机的 FD,则输出将被打印出来。
0
、1
和 2
分别用作 stdin
、stdout
和 stderr
文件的文件描述符。
输入重定向
“<
”符号用于输入或 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 输入输出重定向的流。我们讨论了什么是输入重定向,什么是输出重定向,以及什么是错误重定向。希望您觉得本文有用。