Personal tools
You are here: Home Artigos Super-Poderes Úteis

Super-Poderes Úteis

by Ricardo Bánffy last modified Nov 19, 2008 07:30 PM

Um tutorial rápido sobre as pequenas coisas que um Unix-like sabe fazer e como um usuário mediano pode aproveitá-las

No princípio, havia Multics.

Multics, ou Multiplexed Information and Computing Service, era um conceito muito adiante do seu tempo - ou do nosso. Segundo a visão dos seus criadores, haveria imensos computadores, poderosos e inderrubáveis, rodando Multics, sendo acessados por milhares de pessoas em terminais burros (isso é um termo técnico) espalhadas por todo o planeta. Esses usuários pagariam suas "contas de computador" como hoje pagamos luz, água e TV a cabo. Era um projeto bancado pela ARPA em que MIT (que entrava com cérebros), GE (que entrava com os computadores e alguns cérebros) e Bell Telephone Laboratories - BTL - (que entravam com as linhas de dados e alguns cérebros) trabalhavam juntos.

Diz a lenda que, logo depois da BTL ter deixado o projeto, um grupo de programadores queria continuar jogando Space War em um computador muito menor, um PDP-7 e, para isso, precisava escrever um sistema operacional. O nome foi dado por um colega brincalhão, Uniplexed Information and Computing Service, ou Unics. Ninguém lembra quem sugeriu que mudassem pra Unix.

Desde sempre, Unix teve como prioridade dar o que um programador quer de um sistema operacional: simplicidade, flexibilidade e poder.

Dentes

Poucas pessoas que usam computadores hoje em dia viram ou se lembram de como computadores pessoais eram no começo. Normalmente, assim que você ligava o computador, você caía dentro de um interpretador BASIC. Escrever programas era quase necessário para poder usar o computador. Qualquer usuário daquela época era capaz de escrever programas simples para fazer coisas simples. Uns poucos, faziam enormes e complexos programas apenas para cuidar do seu negócio. Era muito mais uma diversão do que um trabalho. Quem usava um computador sabia escrever programas, pelo menos um pouco.

Com o tempo, surgiram sistemas operacionais independentes de linguagens de programação, mais completos e com o objetivo de tornar computadores mais amigáveis aos leigos. Para isso, acabou se abandonando a programabilidade. Programar computadores, diziam eles, era complexo demais para o usuário comum. Além disso, linguagens interpretadas eram tidas como lentas - programas profissionais eram feitos sempre em linguagens compiladas. Sistemas operacionais passaram a incorporar interfaces gráficas (o que colocou a programação ainda mais longe do alcance de uma pessoa comum - um "Olamundo" tinha centenas de linhas). Por muito tempo, eu mesmo acreditei que abandonar a programabilidade na interface era uma boa idéia. Eu dei as boas-vindas ao Lisa, ao Macintosh, ao OpenLook e, que Deus me perdôe, ao Windows. O resultado disso é que acabamos com computadores amigáveis, mas desdentados.

Poder

Outro dia recebi um e-mail em uma lista, citando a criação de uma ONG, a Sociedade Amigos de Plutão, ligada a amigos do Presidente da República, que teria recebido uma verba nada desprezível para executar sua missão (de garantir o status de planeta à não-tão-grande-pedra-mais-ou-menos-esférica a que chamamos de Plutão). Uma rápida busca no Google me levou a um artigo no site da revista Brasília em Dia, que citava a publicação no Diário Oficial e um curioso vídeo em que o Senador Heráclito Fortes repete a história. Resolvi verificar se algo foi mesmo publicado sobre isso no Diário Oficial da União, como dizia o artigo.

O site da imprensa oficial pode ser tudo, menos amigável. Buscas levam uma eternidade, quando funcionam e sempre é necessário fazer algum malabarismo para obter uma informação. Entendo que eles devam precisar proteger os interesses econômicos (pelo que eu entendi, a entrega eletrônica do jornal é cobrada, e relativamente caro), mas afetar meu conforto é, claramente, ir longe demais.

Como eu imagino que seja meu direito de cidadão consultar livremente todos os documentos que meu governo produz com o dinheiro dos meus impostos, eu resolvi que ia extrair do site os documentos que eu queria. Afinal de contas, eu estava investigando o meu governo. Um pouco de investigação nas páginas (que são construídas para dificultar isso) mostrou que as páginas do DOU estão quebradas em PDFs, um por página, seguindo a seguinte convenção:

http://www.in.gov.br/materias/pdf/do/secaoS/DD_MM_2006/doS-P.pdf

Onde S é o número da seção (o DO tem 3), DD e MM são o dia e o mês com 2 dígitos e P é o número da página da publicação.

Antes de tentar resolver o problema com uma arma nuclear, posso tentar algo mais simples. Abro o browser e digito http://www.in.gov.br/materias/pdf/do/ apenas para dar de cara com um "Forbidden". OK. Armas nucleares, então.

Uma vez aqui, os arquivos poderiam ser facilmente buscados pelo Beagle, pelo Spotlight (se eu estivesse no Mac) ou pelo Windows Desktop Search (se eu ainda usasse Windows). Escolhi fazer isso no nosso servidor de arquivos, que usa o Swish-e para procurar em PDFs.

Um usuário típico desistiria nesse ponto. É claramente trabalhoso demais fazer isso, certo?

Errado.

Aqui vale a pena eu chamar a sua atenção para duas coisas:

A primeira: O Unix foi feito para que comandos (que são quase todos programas independentes) pudessem ser encaixados uns nos outros, passando a saída de um para o outro de modo a ser possível (e fácil, para os iniciados) construir comandos (eu às vezes chamo de "encantamentos") poderosos que fazem coisas ocasionalmente espantosas.

A segunda: Aquela janela de comando de que todos têm medo, que volta-e-meia eu ouço ser chamada de "primitiva" é, na verdade, um interpretador de uma linguagem bastante sofisticada. No caso, o meu Linux me oferece o bash. Eu poderia ter escolhido outra (uma instalação padrão traz várias), mas o bash tem me servido bem nos últimos anos.

Se você tem um desses à mão (até os pobrezinhos que usam Windows podem ter um - baixe o seu como parte do Cygwin em http://sourceware.org/cygwin/), experimente digitar:

for i in `seq -w 1 10` ; do echo Funciona $i ; done

Pressione Enter, se você ainda não fez.

Doeu?

Não vou entrar em mais detalhes sobre o funcionamento disso. Se você quiser aprender mais, procure no Google por "tutorial bash" que, aposto, você vai encontrar tudo explicadíssimo.

Depois de pronto, meu robô buscador de jornais ficou assim:

#!/bin/bash

for mes in 08 ; do
for dia in `seq -w 1 31` ; do
mkdir 2006$mes$dia
cd 2006$mes$dia
for secao in 1 2 3 ; do
for pagina in `seq 1 200` ; do
url="http://www.in.gov.br/materias/pdf/do/secao${secao}\
/${dia}_${mes}_2006/do$secao-$pagina.pdf"
wget $url
done
done
cd ..
done
done

Isso tudo, gravado em um arquivo texto, quando executado, faz o que eu queria que ele fizesse (buscar todas as edições do mês de agosto e colocá-las em pastas).

Encantamentos e Poder

Esse tipo de poder, o de controlar o computador através de programas simples, foi sendo perdido ao longo dos anos. No começo da nossa história, todos os usuários tinham acesso a esse tipo de ferramenta. Hoje em dia, pode ser preciso uma busca deliberada atrás delas.

Poder fazer coisas é bom.

Poder mandar seu computador fazê-las é infinitamente melhor.

Da Utilidade dos Boatos

A propósito, não foi publicado nada sobre a tal sociedade. Não que eu esperasse. Buscas no Google mais detalhadas mostraram, inclusive que o autor do texto original escreveu uma retratação. Discreta, tímida (tem que procurar), mas está lá.

E eu transformei um boato transmitido via e-mail em algo bom. Para algo eles servem.

© Ricardo Bánffy

Este artigo também está disponível aqui.