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

Gin*_*sus 5 fedora rpm rhel terminal pipe

从 rpm 的手册页:

   --pipe CMD
          Pipes the output of rpm to the command CMD.
Run Code Online (Sandbox Code Playgroud)

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

小智 1

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

\n\n

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

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