A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa

Cartilha de Comandos

Dom

8

Fev

2009


20:49

(1 voto de 5.00) 


Adoro o Slackware e, mais recentemente o Ubuntu, por que é enxuto, estável e altamente configurável, mas tem um porém - é preciso saber se virar na linha de comando. Como frequentemente me esqueço de como fazer ou encontrar o que quero, resolvi criar uma lista de comandos que uso com maior frequência para que pudesse ser consultada quando necessário. Ao invés de guardar estas informações no meu caderninho, achei por bem transformá-las neste pequeno artigo.

Listas e Filtros de arquivos

Muitas vezes nos deparamos com um arquivo de log imenso do qual queremos extrair apenas uma pequena parte e, na hora H, a memória dá uma falhada (não a do computador, a minha mesmo!). Seguem umas dicas simples para se virar numa situação desta:

tail

Quando só quero dar uma espiada no final do arquivo, uso o comando tail, que significa "rabo":

# tail meuarquivo.txt

lista as últimas 10 linhas do arquivo.

# tail meuarquivo.txt -n 50

Se quisermos mudar o número de linhas padrão, adicionamos -n seguido do número desejado. No exemplo acima serão mostradas as últimas 50 linhas do arquivo meuarquivo.txt.

head

Para obter as primeiras linhas de um arquivo podemos usar o comando head, que significa "cabeça". Este comando é o inverso de tail:

# head meuarquivo.txt
# head meuarquivo.txt -n 2

No primeiro exemplo obtém-se as primeiras 10 linhas de meuarquivo.txt; no segundo, apenas as duas primeiras.

cat

O nome deste comando vem de catalog, mas não sei porque consegui memorizá-lo lembrando que quero fazer uma catada. Este comando lista o arquivo inteiro:

# cat meuarquivo.txt

Mas o cat também serve para listar mais de um arquivo, um depois do outro. Qual é a vantagem disto? É que podemos "grudar" arquivos (aí sim a catada é geral smile) e jogar tudo para a tela ou criar um novo arquivo com os "catados".

# cat meuarquivo.txt
# cat arquivo1 arquivo2
# cat arquivo1 arquivo2 > arquivo3

No primeiro exemplo meuarquivo.txt é listado na íntegra; no exemplo 2 são listados os arquivos arquivo1 e arquivo2. Nestes dois casos, a saída é para a tela. No exemplo 3, arquivo1 e arquivo2 são salvos num arquivo chamado arquivo3. O sinal de maior ( > ) dirige a saída para a gravação em disco.

more

Já pensou se o tal do meuarquivo.txt tiver trocentas linhas? Quando um cat for usado, a tela vai ficar entupida rapidinho, começa a rolar e, no final das contas, só vamos conseguir ver o fim do dito cujo. Para isto existe o comando more (mais) que podemos associar a um cat:

# cat arquivogrande | more

A barra ( | ) colocada entre comandos é conhecida como pipe, que significa tubulação, encanamento. Serve para que o primeiro comando (cat) possa despejar seu resultado no próximo (more). More significa mais e serve para parar a rolagem da tela quando ela estiver cheia, ou seja, o resultado é mostrado por "teladas" até que chegue ao final. Para ir para a próxima tela, basta apertar a tecla de espaço; para interromper tudo, digite Ctrl+C.

less

O primo próximo de more é o less (menos). Uma das vantagens do less é que ele só lê o que vai para a tela e não o arquivo inteiro - motivo pelo qual ele é mais rápido. Além disto, o less permite rolar telas para frente com a tecla de espaço e permite rolar telas para trás com a tecla b - coisa que o more não faz. Experimente um

#cat arquivogrande | less

e role as telas para frente e para trás com [espaço] e [b].

grep

O cat já quebrou um galhão, mas nem sempre queremos ver tudo, principalmente quando o arquivo é gigante e só queremos dar uma olhada numa determinada informação. É aí que entra o grep (sei lá de onde tiraram este nome), que serve para filtrar informações.

# grep "127.0.0.1" arquivogigante
# grep "127.0.0.1" *.txt
# grep "127.0.0.1" *
# grep "127.0.0.1" * | grep "GET"

O primeiro grep mostra todas as linhas do arquivogigante que tiverem a string 127.0.0.1. Se a listagem começar a ficar muito longa, podemos interrompê-la com Ctrl+C e fazer um pipe com more: grep "127.0.0.1" arquivogigante | more.

O segundo exemplo faz a mesma coisa, mas percorrendo TODOS os arquivos com a extensão txt que existirem no diretório (*.txt). O terceiro exemplo faz o mesmo com todos os arquivos existentes no diretório, independente da extensão.

Finalmente, o quarto exemplo nos mostra como refinar nossa pesquisa "emendando" um grep em greps seguintes para obter uma filtragem em cima de outra. A única coisa neste caso é que, quando o material de pesquisa termina, fica parecendo que o grep "pendurou"... aí é só dar um Ctrl+C para voltar ao prompt :thumbup:

Informações adicionais