Categorias
Linux

Ganhando argumentos

Não podemos ensiná-los a ser vitorioso em cada debate, mas podemos mostrá-lo como ser mestre em outro tipo de argumento: os da linha de comando. Você provavelmente conhece como fornecer múltiplos argumentos a um programa, como por exemplo:

someprog file1 file2 file3

O que é muito bom quando informa comandos manualmente, mas e quando precisa usar uma lista gerada por outro programa? Digamos, por exemplo, que você deseja que o Gimp abra dez imagens grandes de um diretório. Você poderia usar ls -l para encontrar quais são os maiores e então ter o trabalho de informar cada nome de arquivo em gimp arquivo1 arquivo2... Ou poderia a mágica xargs (presente em todas as distribuições).

ls -S --color=never | head -n10 | xargs gimp

xargs monta operações complicadas de linha de comando usando lista de arquivos para que você não precise digitá-las manualmente. Passe uma lista de arquivos ao xargs e ele os arranjará como arquivo1 arquivo2 arquivo3... como vimos anteriormente. Faz sentido? Considere o exemplo acima. Primeiro usamos ls para gerar a lista de arquivos do diretório atual (tendo certeza de que desabilitamos os códigos coloridos já que eles produzem caracteres indesejáveis). Então, usando o bom e velho pipe (|), enviamos o resultado para o utilitário head, que separa as primeiras dez ocorrências.

Agora então temos uma lista de dez arquivos. Como informamos ao Gimp que queremos abrí-los? Não podemos enviar diretamente os resultados de head, pois o Gimp interpretaria como se fossem simples dados gráficos. É aqui que o uso de xargs salva o dia: ele garante que o program cujo nome está a a seguir usará os dados como uma lista de arquivos ao invés de tentar trabalhar diretamente com eles. No nosso exemplo acima, ele diz "pegue os dez primeiros da lista gerada pelo head e então passe para o Gimp no formato tradicional arquivo1 arquivo2 arquivo3...". Você pode fazer muitas coisas com xargs, tudo o que esperad uma lista de arquivos, separados por caracteres de nova linha ou espaços. Como outro exemplo, este apaga todos os arquivos com mais de dez dias (use com cautela!):

find . -mtime +10 | xargs rm

Mais em Truques de linha de comando.

Uma resposta em “Ganhando argumentos”

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.