rpmコマンドに "--pipe"オプションがあるのはなぜですか?

rpmコマンドに "--pipe"オプションがあるのはなぜですか?

rpmのマニュアルページから:

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

これが追加されたのはなぜですか?シェル自体を通してパイプするのではなく、これを使用するのはなぜですか?

答え1

rpmこのオプションは、シェルから呼び出すと役に立ちません。

ただし、他のプログラムから呼び出されたときにその引数が任意の形式のユーザー入力で構成されている場合は、非定型の引数渡しが単純化されますrpm(呼び出し側プログラムが他のプログラム言語を実行するためにシェルを強制的に呼び出さない方法を使用する場合)。 :

  • シェルを使用しない場合、呼び出し側プログラムは独自にパイプラインを設定し、別々に呼び出して待機するrpm必要がありますCMD
  • などのシェルを使用するときにその引数sh -c ´rpm Argument1 Argument2 ...´ | CMDにスペースまたはシェルメタ文字を含めることができる場合は、引数が単語に分割されたりシェルによって解釈されるのを防ぐために、引数をさらに引用する必要があります。
    引数の一部rpmが呼び出し元のユーザー入力に対するものである場合、おそらくプログラマーはシェルの引数Tom and Alice´s dogリストを作成するときにそれを変換する必要があります。Tom\ and\ Alice\´s\ dog(そしてすべてのパラメータはCMD同じ方法で引用されなければなりません。)
    これは遅く、エラーが発生しやすく、セキュリティ上の問題を引き起こす可能性があります。
  • このオプションを使用すると、呼び出し元--pipeプログラムではこれらの項目は必要ありません。
    (しかし、すべての引数はCMD前のように引用されるべきです。なぜなら、CMDはシェルによって解釈され、シェルは単一の引数の単一の単語rpmと同様に呼び出されるからです。)CMDrpm

関連情報