在 Linux 中,当您开始连接命令时,命令行会变得异常强大。您不再需要运行一个命令、保存其输出,然后再运行另一个命令,而是可以创建一个管道,将数据直接在它们之间传递。
理解管道操作符
让我们从一个产生大量输出的命令开始:
ls -la /etc
列表项可能太长,无法在屏幕上显示,难以阅读。虽然您可以将此输出重定向到文件,但更有效的方法是将其直接发送到另一个命令,例如 less,以便于查看。
ls -la /etc | less
管道操作符 |(表示为竖线)是此过程的关键。它获取左侧命令的标准输出(stdout),并将其用作右侧命令的标准输入(stdin)。在这种情况下,我们将 ls -la /etc 的输出通过管道直接传输到 less 命令中。管道是一个您将持续使用的基本工具。
使用 Tee 命令分割输出
如果您想同时在屏幕上查看输出并将其保存到文件中怎么办?这时 tee 命令就派上用场了。linux 中的 pipe and tee 命令 是用于日志记录和监控的经典组合。
ls | tee peanuts.txt
运行此命令后,您将在终端上看到 ls 的输出。如果您检查 peanuts.txt 的内容,您会发现完全相同的信息。tee 命令有效地将输出流分成两个方向:一个到标准输出,另一个到指定的文件。
结合管道和 Tee
通过链接这些命令,您可以创建更高级的工作流程。一种常见模式是在较长的命令链中间使用 pipe to tee。这允许您在继续处理数据之前保存中间结果。
例如,您可以使用 linux pipe tee 组合来在进一步过滤之前查看和保存输出:
ls -la /etc | tee etc_listing.txt | grep "conf"
此命令执行三件事:
- 它列出
/etc目录的内容。 - 它将该输出通过管道传输到
tee,tee将一份副本保存到etc_listing.txt中,并同时将其传递下去。 - 来自
tee的输出随后通过管道传输到grep,grep过滤出包含 "conf" 的行。
掌握这些命令将显著提高您在命令行上的效率。