paulo1205
(usa Ubuntu)
Enviado em 09/04/2019 - 16:28h
Caro MSOliver,
Eu me confundi. Na verdade, a resposta à que eu me referi foi a do pylm, não a sua. Já corrigi a mensagem original.
Mas a sua solução está sujeita ao mesmo problema de princípio, que é um redirecionamento que afeta múltiplos comandos: o
bash, que é o leitor da
pipeline, e tudo o que for por ele executado
No caso em questão, em que você chama um comando que não pede confirmação de modo nenhum, não chega produzir comportamento errôneo. Mas se fosse outro comando, como
rm, que pode pedir confirmação (especialmente se valer o
alias, comumente utilizado, que troca “
rm” por “
rm -i”), ou alguma outra coisa que possa eventualmente querer ler dados da entrada padrão), essa entrada seria consumida do mesmo
pipeline.
Note que eu NÃO DISSE que a solução do pylm ou, agora, a sua estão
erradas, mas que têm uma desvantagem ou um problema latente. Eu acredito que seja bom conhecer esses detalhes, mesmo em casos em que eles não gerem comportamento indesejado, a fim de saber, de antemão, evitar a reprodução do mesmo padrão de codificação em casos em que poderiam produzir efeitos indesejados.
Se você quiser considerar preciosismo, pode considerar. Mas eu trabalho com UNIX e Linux há 26 anos, e eu
já vi mais de um caso de efeitos indesejados provocados por construções semelhantes às que vocês mostraram — inclusive um caso em que houve uma perda maciça de dados (vários terabytes, armazenados em
storages NetApp, e que tiveram de ser restaurados de fita). Programar (ou
scriptar) de modo seguro requer entendimento e prática. Minha intenção é dar subsídios para que esse conhecimento possa ser assimilado, e estimular essa prática. Seja com
shell, com Perl, com C e C++, ou qualquer outra ferramenta.
... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)