命令行环境提供了两个非常有用的功能:允许重定向命令的输入和输出为另一个文件,以及发送命令的输出到另一个命令,这分别称为重定向和管道。
为了理解这两个重要概念,我们首先需要理解三个最重要的字符输入输出流类型,以 *nix 的话来说,它们实际上是特殊的文件。
在下面的例子中,ls /var
的结果被发送到stdout(屏幕展示),ls /tecmint 的结果也一样。但在后一种情况下,它显示在标准错误输出上。
输入和输出命令实例
为了更容易识别这些特殊文件,每个文件都被分配有一个文件描述符,这是用于访问它们的抽象标识。主要要理解的是,这些文件就像其它的一样,可以被重定向。这就意味着你可以从一个文件或脚本中捕获输出,并将它传送到另一个文件、命令或脚本中。这样你就可以在磁盘上存储命令的输出结果,用于稍后的分析。
要重定向 stdin (fd 0)、 stdout (fd 1) 或 stderr (fd 2),可以使用如下操作符。
转向操作 | 效果 |
> | 重定向标准输出到一个文件。如果目标文件存在,内容就会被重写。 |
>> | 添加标准输出到文件尾部。 |
2> | 重定向标准错误输出到一个文件。如果目标文件存在,内容就会被重写。 |
2>> | 添加标准错误输出到文件尾部。 |
&> | 重定向标准错误和标准输出到一个文件。如果目标文件存在,内容就会被重写。 |
< | 使用特定的文件做标准输入。 |
<> | 使用特定的文件做标准输入和标准输出。 |
与重定向相比,管道是通过在命令后和另外一个命令前之间添加一个竖杠(|)
。
记得:
![]() | ![]() .. 定价:¥45 优惠价:¥42 更多书籍 |
![]() | ![]() .. 定价:¥225 优惠价:¥213 更多书籍 |