Linux/Unix 中的输入输出重定向示例

什么是重定向?

重定向是 Linux 中的一项功能,在执行命令时,您可以更改标准输入/输出设备。任何 Linux 命令 它接受一个输入并给出一个输出。

  • 标准输入 (stdin) 设备是键盘。
  • 标准输出 (stdout) 设备是屏幕。

通过重定向,可以改变上述标准输入/输出。

点击 点击这里 如果视频无法访问

输出重定向

- '>' 符号用于输出(STDOUT)重定向。

输出重定向

计费示例:

ls -al > listings

这里,命令 ls -al 的输出被重定向到文件“listings”而不是您的屏幕。

输出重定向

备注:将命令输出重定向到文件时使用正确的文件名。如果存在同名的现有文件,则重定向的命令将删除该文件的内容,然后可能会覆盖它。

如果你不想覆盖文件,但想向现有文件添加更多内容,那么你应该使用 '>>' 操作员。

输出重定向

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

$ cat music.mp3 > /dev/audio

cat 命令读取文件 music.mp3 并将输出发送到音频设备 /dev/audio。如果您的 PC 中的声音配置正确,此命令将播放文件 music.mp3

输入重定向

- '' 符号用于输入(STDIN)重定向

输入重定向

计费示例: Linux 中的邮件程序可以帮助您从终端发送电子邮件。

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

Mail -s "Subject" to-address < Filename

输入重定向

这会将文件附加到电子邮件中,然后发送给收件人。

上面的例子很简单。让我们看看一些利用文件重定向的高级重定向技术 Descriptors。

文件 Descriptors (FD)

在 Linux/Unix 中,一切都是文件。常规文件、目录,甚至设备都是文件。每个文件都有一个关联的编号,称为文件 Descript或 (FD)。

你的屏幕上还有一个文件 Descript或者。当程序执行时,输出被发送到文件 Descript或屏幕,然后您会在显示器上看到程序输出。如果输出发送到文件 Descript或者打印机,程序输出就会被打印出来。

错误重定向

每当你在终端执行程序/命令时,总会打开 3 个文件,即标准输入、标准输出、标准错误.

错误重定向

只要程序运行,这些文件就始终存在。如前所述,文件描述符与每个文件相关联。

文件 文件 Descriptor
标准输入 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”命令,我们在“.”当前目录中搜索名称以“my”开头的文件

为什么要进行错误重定向

例如3: 让我们看一个更复杂的例子,

服务器管理员经常列出目录并将错误和标准输出存储到文件中,以便稍后处理。以下是命令。

ls Documents ABC> dirlist 2>&1

在这里,

  • 将一个文件的输出写入另一个文件的输入。2>&1 表示 STDERR 重定向到 STDOUT 的目标(即文件目录列表)
  • 我们正在将错误输出重定向到标准输出,而标准输出又被重定向到文件 dirlist。因此,输出都写入文件 dirlist

为什么要进行错误重定向

总结

  • Linux 中的每个文件都有相应的文件 Descript或与之相关
  • 键盘是标准输入设备,而屏幕是标准输出设备
  • “>” 是输出重定向运算符。“>>” 将输出附加到现有文件
  • “<”是输入重定向运算符
  • “>&”将一个文件的输出重定向到另一个文件。
  • 您可以使用相应的文件重定向错误 Descript或2。

每日Guru99新闻简报

通过立即获取最新、最重要的人工智能新闻报道来开始您的一天。