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
と同様に呼び出されるからです。)CMD
rpm