为什么 rpm 命令有一个“--pipe”选项?

为什么 rpm 命令有一个“--pipe”选项?

来自 rpm 的手册页:

   --pipe CMD
          Pipes the output of rpm to the command CMD.

为什么添加这个?为什么要使用它而不是通过 shell 本身进行管道传输?

答案1

rpm当从 shell 调用时,该选项没有用处。

但是当从其他程序调用时,如果这些参数是由某种形式的用户输入构造的,那么它将简化非静态参数的传递rpm(前提是调用程序是用一种不会强制调用 shell 来执行其他程序的语言编写的):

  • 当不使用 shell 时,调用程序需要自行设置管道并分别调用和rpm等待CMD
  • 当使用诸如 之类的 shell 时sh -c ´rpm Argument1 Argument2 ...´ | CMD,如果这些参数可能包含空格或 shell 元字符,则需要对参数进行额外的引用,以防止它们被拆分为单词或被 shell 解释:
    如果 的某些参数rpm是调用程序的用户输入,可能是这样,程序员在为 shell 构建参数列表时Tom and Alice´s dog必须将其转换为。 Tom\ and\ Alice\´s\ dog(并且 的任何参数都CMD必须以相同的方式引用。)
    这速度较慢,容易出错,并且可能会引起安全问题。
  • 使用该选项时--pipe,调用程序不需要这些。
    (但是 的任何参数CMD都必须像以前一样被引用,因为 CMD 是由 shell 解释的,而 shell 是从 调用的,rpm因为CMD是来自单个参数的单个单词rpm。)

相关内容