重定向和管道

💡 原文中文,约2700字,阅读约需7分钟。
📝

内容提要

Linux 中的 init 进程创建了标准输入、输出和错误的文件描述符。程序可以通过重定向将输出和错误信息保存到文件,使用 /dev/null 丢弃输出。输入重定向和 Here Document 允许从文件或多行输入获取数据,管道则可以将一个命令的输出作为下一个命令的输入,并处理错误信息。

🎯

关键要点

  • Linux 中的 init 进程创建了 3 个特殊的文件描述符用于输入输出。

  • 程序通过标准输入从键盘读取数据,标准输出和标准错误显示在屏幕上。

  • 重定向可以将输出和错误信息保存到文件,使用 /dev/null 可以丢弃输出。

  • 输出重定向的语法为 cmd [1-n]> [文件/文件描述符/设备等]。

  • 可以将 stdout 和 stderr 重定向到同一文件,但需注意文件打开次数和内容覆盖问题。

  • 输入重定向的语法为 cmd [1-n]< [文件/文件描述符/设备等]。

  • Here Document 允许将多行输入传递给命令,使用特定的分隔符。

  • 管道可以将一个命令的 stdout 作为下一个命令的 stdin,但无法处理 stderr。

  • 可以同时将 stdout 和 stderr 重定向到下一个命令的 stdin。

延伸问答

Linux 中的 init 进程创建了哪些文件描述符?

init 进程创建了标准输入、标准输出和标准错误三个文件描述符。

如何在 Linux 中将命令的输出重定向到文件?

可以使用语法 cmd [1-n]> [文件] 将命令的输出重定向到指定文件。

什么是 Here Document,如何使用它?

Here Document 是一种特殊的重定向方式,可以用来将多行输入传递给命令,使用方式为 cmd << delimiter ... delimiter。

如何将标准错误和标准输出同时重定向到同一个文件?

可以使用语法 cmd > out.log 2>&1 将 stdout 和 stderr 同时重定向到 out.log 文件。

管道在 Linux 中的作用是什么?

管道可以将一个命令的标准输出作为下一个命令的标准输入,但无法处理标准错误。

如何使用 /dev/null 丢弃命令的输出?

可以使用命令 2> /dev/null 或者 > /dev/null 来丢弃标准输出或标准错误。

🏷️

标签

➡️

继续阅读