Por que o comando rpm tem uma opção '--pipe'?

5

A partir da página de manual do rpm:

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

Por que isso foi adicionado? Por que você iria usá-lo em vez de canalizar através do próprio shell?

    
por Ginger Jesus 17.10.2018 / 01:39

1 resposta

0

Essa opção não seria útil quando rpm é chamado de um shell.

Mas, quando chamado de algum outro programa, ele simplifica a passagem de argumentos não estáticos para rpm se esses argumentos forem construídos de alguma forma de entrada do usuário (desde que o programa de chamada seja escrito em uma linguagem que não chame forçadamente um shell para executar outros programas de qualquer maneira):

  • Quando não estiver usando um shell, o programa de chamada precisará configurar o pipe sozinho e chamar e aguardar rpm e CMD separadamente.
  • Ao usar um shell como sh -c ´rpm Argument1 Argument2 ...´ | CMD , ele precisa de um nível adicional de cotação em torno dos argumentos para evitar que eles sejam divididos em palavras ou interpretados pelo shell se esses argumentos puderem conter espaços ou metacaracteres do shell:
    Se algum argumento para rpm for a entrada do usuário para o programa de chamada, ele poderia ser Tom and Alice´s dog eo programador teria que traduzir isso para Tom\ and\ Alice\´s\ dog ao construir a lista de argumentos para o shell. (E quaisquer argumentos para CMD teriam que ser citados da mesma maneira). Isso é mais lento, propenso a erros e pode gerar preocupações de segurança.
  • Ao usar a opção --pipe , o programa de chamada não precisa de nenhuma delas.
    (Mas qualquer argumento para CMD teria que ser citado como antes porque o CMD é interpretado por um shell que é chamado de rpm porque CMD é uma única palavra de um único argumento para rpm .)
por 23.10.2018 / 18:14