Comandos Úteis no Linux

Oct 25th, 2011

Vou apresentar alguns comandos que facilitam o meu trabalho no Linux. O objetivo deste texto não é trazer um guia definitivo sobre os comandos, mas apresentá-los com exemplos de uso para o leitor. Para mais informações sobre eles, consulte suas manpages ou websites.

Beach Shells - STX Directory

O Laço for

“for” (para) é um laço utilizado em [quase] todas as linguagens de programação. Seu objetivo é realizar uma sequência definida de comandos por um número determinado de vezes. Apesar de ser mais útil e legível dentro de Shell Scripts, ele pode ser usado tranquilamente como um comando regular — assim como outras estruturas de controle, como if e while.

$ for pic in *.png; do convert $pic "$(basename "$pic" png)jpg"; done; rm *png

No exemplo acima, o for itera sobre todos os arquivos com extensão “.png” do diretório corrente (*.png), convertendo-os para JPEG e trocando sua extensão. Depois de executado, o comando rm apaga todos os arquivos png do diretório. De fato, utilizar o comando convert (integrante do pacote ImageMagick) dentro de um laço é muito útil para tratar imagens em massa.

O “Farejador” find

O find é quase que um Google no Bash. Busca tudo dentro do padrão e do escopo especificados e ainda pode executar ações quando encontrar algo.

$ find ~/Music -name *mp3 -type f -exec mpg321 {} -w {}.wav \;

O comando acima busca todos os arquivos (-type f) com extensão “mp3″ dentro do diretório ~/Music e executa o programa mpg321 para convertê-los para Wave. Perceba que isso poderia ser resolvido com o for, apresentado anteriormente. Contudo, o find em detrimento do for pode ser considerado uma solução mais Shell-Scriptista, além de ser de mais fácil utilização às vezes.

Imagine que você queira apagar todos os arquivos com a extensão THM do seu diretório de vídeos — incluindo sub-diretórios. Com o comando abaixo isso é resolvido:

$ find ~/Videos -name *.THM -type f -exec rm {} \;

Perceba que dentro do parâmetro exec, o par {} será substituído por cada ocorrência do padrão que for encontrada. Note também que colocar *.THM ou *THM tem poucas mudanças. As extensões em sistemas Unix existem apenas para o usuário se organizar melhor. Para o sistema, não faz diferença ter um arquivo AVI com extensão JPG. Dessa forma, a colocação do ponto antes da extensão, durante a busca, é facultativa e muitas vezes não altera o resultado.

Neste caso, se fosse usado apenas *THM, poderia casar tanto com RHYTHM quanto com RHYTHM.THM — se RHYTHM fosse um arquivo sem extensão. Lembre-se também que em Shell Script o caso dos caracteres conta. Então arquivo.thm não se encaixaria na busca realizada. Para ignorar o caso no find, troque -name por -iname.

O “Canivete” de Vídeos mencoder

Não conheço muito sobre o funcionamento desse camarada, mas ele é muito eficiente. O mencoder tem a manha de juntar vários vídeos em um só, com apenas uma linha de comando e ainda funciona com vários tipos de arquivos. A seguir, dois exemplos para concatenar as entradas video1 e video2 em video_final, nos formatos FLV e MP4:

# FLV
$ mencoder -forceidx -of lavf -oac copy -ovc copy -o video_final.flv video1.flv \
video2.flv

# MP4
$ mencoder video1.mp4 video2.mp4 -o video_final.mp4 -of lavf -lavfopts format=mp4 \
-vf harddup -oac lavc -ovc lavc

O Narcisista narkissos

Narkissos é uma ferramenta que eu mesmo desenvolvi e que uso bastante. Trata-se de um Shell Script que trabalha sobre uma ou várias imagens, ajustando o nome do arquivo, normalizando as cores, redimensionando e alterando a data de modificação. Antes eu levava cerca de 1 minuto para fazer isso em uma imagem. Com o Narkissos, isso é feito em menos de 5 segundos, um ganho de 55 segundos por foto. Se multiplicarmos isso por 100 fotos, teremos um ganho de 5500 segundos, que equivalem a 91,6 minutos — mais de 1 hora e meia!

$ narkissos.sh -p ~/Images -s 800 -r -v

O comando acima trabalha dentro do diretório Images (-p ~/Images) e seus subdiretórios (-r), tratando todas as imagens suportadas pelo programa (GIF, JPG e PNG, na versão atual), sendo que elas serão redimensionadas para 800 px — base ou altura, o que for maior — (-s 800). Tudo isso é mostrado na tela para o usuário (-v). Esse é o comando que eu uso normalmente para configurar imagens em massa para publicação na Web.

Você pode ler mais sobre o Narkissos aqui e obter sua última versão aqui. :-)

Se você é novo no Linux, saiba que há muito tempo o usuário não precisa saber sobre os comandos do sistema. Distribuições como Ubuntu possuem várias aplicações gráficas que resolvem a maioria dos problemas. Muito disso se deve amadurecimento dos ambientes gráficos — como GNOME e KDE — e ao crescente número de aplicativos gráficos para o sistema do pinguim. Contudo, conhecer comandos ajuda a realizar tarefas mais rapidamente e sem muitas das restrições impostas por aplicações gráficas.

About author:

José Lopes é pós-graduado em Administração em Redes Linux pela Universidade Federal de Lavras e profissional certificado ITILv3 Foundation. Encontra na música, literatura e no cinema, grandes fontes de inspiração. Adora tecnologia em geral, principalmente ligada à informática, sua área de atuação.

All entries by José Lopes


Leave a Reply