发布于 2026-01-06 0 阅读
0

Linux 系统中的管道

Linux 系统中的管道

在上一篇文章中,我们探讨了 Linux 系统的主要功能之一:I/O 重定向

今天我们将学习如何使用管道来增强I/O 重定向的功能。

什么是管道?

Pipe命令将一个命令的标准输出连接到另一个命令的标准输入。

管道允许我们同时使用多个命令,即使用一个命令,然后将输出传递给下一个命令,而无需将输出保存到文件中。

管道的语法

管道语法

在上述语法中,|表示pipe command命令1的输出作为输入提供给命令2,命令2的输出作为输入提供给命令3。

pipe命令看起来与>and非常相似>>,但区别在于 pipe 命令会将一个命令重定向到另一个命令,而>and>>只能用于文件。

让我们举个例子来更好地理解

  • 我们只需要从今天算起的日期。

让我们运用目前为止学到的知识来度过这一天。

但首先,让我们看一下 date 命令的输出。

日期输出

date 命令会返回日期、星期几、时间以及时区信息。我们只需要上面输出中的星期几即可。

要从输出中仅获取特定列,我们将使用cut以下命令

切割日期

在上述命令中,我们首先获取日期并将其保存到文件中。

然后我们从文件中读取日期,并应用 cut 命令,该命令用于根据分隔符(在本例中
空格)将一行文本分成多列。

之后,我们得到了字段 1 的值,因为日期在第一个字段中有所提及。

现在让我们尝试使用管道来获得相同的输出。

管道切割日期

在上面的例子中,我们使用管道来执行相同的操作,但我们用一行代码完成了这些操作。

上述例子让我们对管道系统的强大功能有了一些了解。

让我们再举一个例子,首先需要将当前日期保存到文件“currentDate.txt”中,然后将该文件作为命令的输入cut,最后将命令的输出保存cut到文件“currentDay.txt”中。

好吧,即使使用管道,这似乎也有点太多了,它需要多个命令。对吧?

不,利用管道,我们可以在一行代码中完成这项工作。

为此,我们需要借助命令tee

tee命令用于将输出保存到文件。

  • 当我们需要在将文件传递给 cut 命令之前将其保存到文件中时

日期保存剪切保存

在上面的示例中,我们首先调用date命令来获取当前日期,
然后使用该tee命令创建一个 T 形连接,该连接将值水平传递给 cut 命令,同时将数据垂直传递到名为“currentDate.txt”的文件中。

之后,我们剪切并获取当前日期,并使用tee命令将日期保存到文件“currentDay.txt”中,并将其传递到标准输出,即终端

为了检查文件是否真的保存了,我们使用命令ls检查了目录内容。

最后,我们来看一个例子:读取一个包含需要删除的文件名的文件,然后删除这些文件。

等等,用管道连接真的能做到吗?

我们来看看。

  • 当我们需要在从文件中读取文件后删除文件时

因此,要在我们的管道中使用此删除命令,我们需要将标准输出转换为命令参数,因为该rm命令只接受命令行参数。

为此,我们使用xargs命令将标准输出转换为命令行参数。

删除文件-xargs

在上面的例子中,我们使用cat命令读取文件内容,然后使用|命令将输出作为输入传递给rm命令,并使用命令xargs将标准输出转换为命令行参数。

在这篇文章中,我们看到了以下新命令

  1. date- 打印或设置系统日期和时间。
  2. cut- 从每行文件中移除部分内容。
  3. xargs将标准输出转换为命令行参数。

以上就是关于Linux系统中管道连接的全部内容。如果您有任何问题或建议,或者想让我们接下来探讨其他内容,请随时告诉我。

文章来源:https://dev.to/yashsugandh/piping-in-linux-system-4456