输入、输出重定向
Linux 和其他类 UNIX 操作系统的一个特点就是小和相对简单的应用程序的数量,以及能够将将它们堆叠在一起来创造复杂程序的能力。这可以通过重定向一个程序的输出到另一个程序,或者通过从一个文件或者第二个程序中提取输入来做到。
一开始,我们会演示给你如何将一个程序的输出重定向到文件中。这通过 >
字符来实现。当 bash 看到 >
字符时,会将标准输出(stdout)的内容重定向到字符后面跟着的文件中。
在这个例子中,我们演示了如果没有将标准输出定位到一个文件中,echo
会显示的内容,之后我们将其重定向到 /tmp/bar
文件中。如果这个文件不存在,会被创建。然后 echo
输出的内容就会被放在其中。如果这个文件存在,则其中的内容会被覆盖。如果你想保存这个文件中原本的内容,可以使用 >>
来添加输出到文件的后面。
你也可以重定向标准错误(stderr)到文件中。这有一点不同,你需要使用 2>
而不是 >
(因为 bash 能重定向标准输入,标准输出和标准错误,因此需要进行区分。 0
表示标准输入,1
表示标准输出,2
表示标准错误。除非你指明,否则 bash 会认为 >
表示的是重定向到标准输出。 1>
表示的也是重定向到标准输出)。
如果你要重定向标准输入,使用 <
字符,尽管这并不常用。
最后你也可以将一个程序的输出重定向到另一个程序的输入。这也许是 bash 和其他 shell 最有用的特点,可以通过 |
字符完成。(这个字符被认为是管道符,就好像连接两个程序的管道)
最后更新于