30 de junho de 2009

Alguns usos para o awk

Quando for necessário coletar informações em uma lista tabular, podemos utilizar o comando $awk. Por lista tabular entendemos qualquer entrada de dados que tenha um delimitador conhecido, seja ele espaço, vírgula, ponto-e-vírgula, ponto, dois-pontos, etc, como por exemplo:

joão maria pedro teresa
joão,maria,pedro,teresa
joão:maria:pedro:teresa

Como entrada do $awk, cada item é uma variável especial, começando em $1 e seguindo $n, onde n pode ser qualquer outro número. Se quisermos os nomes maria e teresa, seria o seguinte comando:

$awk '{print $2,$4}'


Por padrão, o separador usado é o espaço. Se necessário, podemos definir outro separador, com o parâmetro -F.

$awk -F "," '{print $2,$4}'

Vamos agora acrescentar à saída dois pontos entre os nomes (o resultado exibido seria maria:teresa):

$awk '{print $2":"$4}'

Podemos também usar mecanismos de decisão (se a segunda entrada igual a maria, imprima):

$awk '($2=="maria") {print $2,$4}'

Claro que não estou abrangendo toda a gama de opções que o comando permite realiza, existem muitos outros, basta consultar o $man awk. Além disso, todos esses comandos são aplicáveis a diversas entradas de dados, seja um $ls, um $cat, ou mesmo um arquivo de texto.

24 de junho de 2009

Exemplos de uso do find

O find é um comando utilizado para realizar buscas, geralmente em nomes de arquivos. Seu uso básico é relativamente simples:

(lista todos os arquivos, em todos os diretórios, com uma extensão especificada)
$find /* -name *.html

A ferrementa se mostra realmente poderosa quando precisamos algo mais elaborado, como por exemplo buscar um conteúdo dentro dos arquivos:

(lista, em todos os arquivos, o nome do arquivo - e a linha deste - onde encontra-se uma string)
$find /* -print0 | xargs -0 grep 'shell57'

Ainda é possível ver um terceiro exemplo de uso, mas agora manipulando nomes de diretório:

(procura, dentro da pasta home de cada usuário, se existe a pasta public_html e mostra o caminho completo)
$find /home/*/public_html -maxdepth 0 -type d

Claro que existem muitos outros casos de uso, inclusive que podem fazer exatamente a mesma coisa de formas diferentes, mas já é um começo e ajuda a, pelo menos, saber qual a comando podemos recorrer. É necessário, no entanto, estudar seus parâmetros possíveis - que são muitos! -, para aplicá-lo em algum caso específico de busca.

8 de junho de 2009

colocando um script na inicialização automática

Existe uma funcionalidade muito legal do linux que é a inicialização automática. Ela pode ser qualquer coisa: um script de limpeza, um início de processo, uma verificação de segurança; enfim, qualquer coisa que precise ser rodada automaticamente.

As regras são, a grosso modo, essencialmente para inicialização; mas podem ser para desligamento, reinicialização, entre outros. Em um momento mais oportuno falo sobre isso.

Seja qual for a alternativa escolhida para adicionar o script à inicialização, deve-se primeiramente criá-lo diretamente ou linká-lo na pasta /etc/init.d/.

Se quisermos fazer "na unha", podemos fazer então os links simbólicos em cada um dos níveis de rc ou, muito mais facilmente, usar o comando que cria os links:
$ update-rc.d nome-do-script defaults

Se, por algum motivo, precisarmos removê-lo da inicialização:
$ rm /etc/init.d/nome-do-script
$ update-rc.d nome-do-script remove

Caso não o retiremos do /etc/init.d/, o comando não pode ser completado.