如果您尝试将一个 Linux 命令的输出通过管道传输到另一个,您可能会遇到命令失败的错误,因为它的参数列表太长。
幸运的是,Linux 系统上有一个命令可以正确格式化命令的参数。 它被称为 xargs ,这里是如何使用它。
为什么使用 xargs?
xargs 所做的是它接收标准输出并对其进行格式化,以便另一个命令可以接收它。 虽然许多 Linux 实用程序可以接受标准输入,但有些只接受参数作为输入。
如果您尝试将标准输入重定向到命令,这些可能会失败。 一些命令仍然只接受一定数量的参数,而 xargs 会为您处理这些。
如何在 Linux 上使用 xargs
您可以像这样调用 xargs:
xargs [command]
xargs 跟踪命令接受的参数长度,并格式化标准输入以输出参数列表以提供给命令。 当它达到命令行的限制时,它将使用剩余的参数再次调用该命令。
在管道中使用 xargs
xargs 的用处在于它在管道中使用时。 一个做作的 example 将管道 cat 到 echo,这是一个只接受参数的命令,而不是标准输入。
cat | echo
这将导致 echo 在您点击后立即打印您在一行上键入的任何内容 Ctrl + D.
xargs 最常与 find 命令一起使用,find 命令用于列出文件,而 xargs 用于以某种方式处理文件列表。
find 命令的语法已经够复杂了,为什么还要在其中引入另一个命令呢? 如果你使用 find 的“-执行” 选项,它会在每次搜索目录中的文件时启动一个新进程。使用 xargs 更有效。
您可能想要删除目录中早于某个特定日期(例如 90 天)的文件。 为此,您将使用此管道:
find . -mtime +90 -print | xargs rm
xargs 帮助 Linux 命令正确处理输入
使用 xargs,您现在可以确保命令以您期望的方式接受参数。 结合find,它可以让你快速处理你机器上的文件。
作为 Unix 哲学的产物,在 shell 中重定向输入和输出的能力是 Linux 的持久优势之一。 如果您想了解有关 Linux 输入/输出重定向如何工作的更多信息,请继续阅读。