De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


Como não usar cat

Colaboração: Arnaldo Mandel

Data de Publicação: 30 de Outubro de 2001

Existem alguns vícios que parecem ser comuns aos iniciantes de programação em shell. Desses, o mais comum é provavelmente o uso de cat no início de um pipe, com um único arquivo como argumento.

Isso nunca é necessário, já que o efeito é colocar o conteúdo desse arquivo na entrada padrão do próximo ítem do pipe, e isso pode ser feito diretamente. Por exemplo:

Ruim                           Bom
—--                           -----
 
cat arq | sed -e nheconheco    sed -e nheconheco < arq
cat arq | grep pisqpisq        grep pisqpisq < arq
cat arq | sort milopções       <arq sort milopções

Note que a redireção pode ficar em qualquer posição. Ops! Ruim X Bom? Mas o "Ruim" funciona!

O que ocorre é que ao chamar cat está se abrindo mais um processo. Isso em geral é irrelevante, mas num script em que muitas linhas do gênero sejam executadas repetidamente, o sistema pode acusar a carga.

Além disso, cuidado com detalhes desse tipo levam à produção de scripts melhores, explorando melhor a capacidade dos vários utílitários usados. Por exemplo, um pouco mais de atenção leva a substituir a coluna "Bom" por:

Melhor

sed -e nheconheco arq
grep pisqpisq arq
sort milopções arq

Mais informações sobre esse vício e outros ( grep ... | awk ...) aparecem na bem humorada página:

Useless Use of Cat Award http://www.ling.helsinki.fi/users/reriksso/unix/award.html



Veja a relação completa dos artigos de Arnaldo Mandel