sexta-feira, 3 de outubro de 2008

Linux: Uma introdução à linha de comando

Por Carlos E. Morimoto

No início, todos os sistemas operacionais usavam interfaces de modo texto, já que elas são uma forma simples de aceitar comandos e exibir os resultados, mesmo em máquinas com poucos recursos. Antes do Windows, existiu o DOS e, antes do KDE, Gnome e todas as outras interfaces que temos atualmente, o Linux tinha também apenas uma interface de modo texto. Mesmo com toda a evolução com relação às interfaces e aos utilitários de configuração gráficos, o bom e velho terminal continua prestando bons serviços.
O grande atrativo do terminal é que, com exceção de alguns poucos aplicativos específicos, os comandos do terminal são sempre os mesmos. Isso faz com que ele seja um porto seguro, com o qual você pode contar, sem importar se você está no Ubuntu ou no Slackware. O terminal é também a forma mais natural de “conversar” com o sistema, sempre que você precisa de qualquer coisa além do arroz com feijão.
Por exemplo, imagine que você precisa mover todos os arquivos com extensão .jpg (em uma pasta com muitos arquivos para outra. Em vez de precisar mover um por um, ou fazer algum malabarismo com a ordem de exibição dos arquivos (para organizar a exibição com base na extensão dos arquivos e poder assim selecionar todos os .jpg com o mouse), você poderia simplesmente abrir o terminal e digitar:
$ mv *.jpg /outra-pasta
Além dos comandos básicos, dois outros recursos que tornam o terminal tão poderoso são a possibilidade de combinar diferentes comandos, de forma a executar tarefas mais complexas ou filtrar os resultados e a possibilidade de escrever pequenos programas em shell script.
Por exemplo, para assistir vídeos no meu Nokia 6120, preciso convertê-los para para um formato especial, suportado pelo RealPlayer, com o fluxo de vídeo em MPEG4 e o áudio em AAC. No Windows, precisaria converter os vídeos um a um, mas no Linux posso usar um pequeno script para automatizar o trabalho:
#!/bin/sh
for video in *; doffmpeg -i “$video” -f mp4 -vcodec mpeg4 -b 350000 -r 15 -s 320×240 \-acodec aac -ar 24000 -ab 128 -ac 2 “$video”.mp4rm -f tmp.avidone
Quando executado dentro de uma pasta com vários arquivos de vídeo, o script simplesmente converte todos os arquivos, uma a um, gerando os arquivos .mp4 que posso então copiar para o smartphone. Com isso, preciso apenas mover todos os vídeos que quero converter para uma pasta, executar o script e deixar o micro trabalhando durante a noite fazendo o trabalho mecânico de conversão, em vez de precisar repetir os mesmos passos para cada arquivo que quisesse converter. Os scripts em shell podem ser usados para automatizar qualquer tipo de tarefa que você precisa executar repetidamente, de atualizações do sistema a backups, passando por todo tipo de tarefas. Essencialmente, tudo o que é possível fazer via linha de comando (ou seja, praticamente tudo) pode ser automatizado através de um shell script.
Se você chegou a usar o Kurumin 7, deve se lembrar do Clica-Aki, um painel gráfico com várias funções, que era um dos grandes atrativos do sistema. Apesar da complexidade, ele nada mais era do que um conjunto de shell scripts, acionados através das opções e botões dentro da interface. Até mesmo o instalador do sistema era inteiramente escrito em shell script.
Curiosamente, uma das grandes reivindicações de administradores Windows sempre foi uma interface de linha de comando, que permitisse administrar o sistema remotamente sem necessidade de usar a interface gráfica e automatizar tarefas. Mesmo a contragosto, a Microsoft acabou sendo obrigada a dar o braço a torcer e desenvolver o PowerShell, que nada mais é do que uma interface de linha de comando para o Windows.
A grande diferença é que no Linux a interface de modo texto evoluiu junto com o restante do sistema e se integrou de uma forma bastante consistente com os aplicativos gráficos. Aprender a usar o modo texto é parecido com aprender uma segunda língua, é um processo gradual e constante, onde você sempre está aprendendo comandos, parâmetros e truques novos. Quanto mais você aprende, mais tempo você acaba passando no terminal; não por masoquismo, mas porque ele é realmente mais prático para fazer muitas tarefas.
Um dos usos mais básicos para o terminal é simplesmente para abrir aplicativos, substituindo o uso do iniciar. Você pode chamar qualquer aplicativo gráfico a partir do terminal; na maioria dos casos o comando é o próprio nome do programa, como “konqueror” ou “firefox”. Lendo outros textos, ou lendo os livros, você vai notar que em muitos exemplos ensino os passos para executar tarefas através da linha de comando, pois os atalhos para abrir os programas, itens nos menus, etc., podem mudar de lugar, mas os comandos de texto são algo mais ou menos universal, mudam pouco mesmo entre diferentes distribuições. Esta mesma abordagem é adotada de forma geral dentro dos livros sobre Linux.
Por exemplo, para descompactar um arquivo com a extensão .tar.gz, pelo terminal, você usaria o comando:
$ tar -zxvf arquivo.tar.gz
Aqui o “tar” é o comando e o “-zxvf” são parâmetros passados para ele. O tar permite tanto compactar quanto descompactar arquivos e pode trabalhar com muitos formatos de arquivos diferentes, por isso é necessário especificar que ele deve descompactar o arquivo (-x) e que o arquivo está comprimido no formato gzip (z). O “v” é na verdade opcional, ele ativa o modo verbose, onde ele lista na tela os arquivos extraídos e para onde foram.
Se você tivesse em mãos um arquivo .tar.bz2 (que usa o bzip2, um formato de compactação diferente do gzip), mudaria a primeira letra dos parâmetros, que passaria a ser “j”, indicando o formato, como em:
$ tar -jxvf arquivo.tar.bz2
Você poderia também descompactar o arquivo clicando com o botão direito sobre ele em uma janela do Konqueror e usando a opção “Extrair > Extrair aqui”. Para quem escreve, é normalmente mais fácil e direto incluir o comando de texto, mas você pode escolher a maneira mais prática na hora de fazer.
Existem duas formas de usar o terminal. Você pode acessar um terminal “puro” pressionando as teclas “Ctrl+Alt+F1″, mudar entre os terminais virtuais pressionando “Alt+F2″, “Alt+F3″, etc. e depois voltar ao modo gráfico pressionando “Alt+F7″ (em muitas distribuições a combinação pode ser “Alt+F5″ ou mesmo “Alt+F3″, dependendo do número de terminais de texto usados por padrão).
Estes terminais são às vezes necessários para manutenção do sistema, em casos em que o modo gráfico deixa de abrir, mas no dia-a-dia não é prático usá-los, pois sempre existe uma pequena demora ao mudar para o texto e voltar para o ambiente gráfico, e, principalmente, estes terminais não permitem usar aplicativos gráficos.
Na maior parte do tempo, usamos a segunda forma, que é usar um “emulador de terminal”, um terminal gráfico que permite rodar tanto os aplicativos de texto, quanto os gráficos.
No KDE, procure o atalho para abrir o Konsole. Ele possui várias opções de configuração (fontes, cores, múltiplas janelas, etc.). No Gnome é usado o Gnome Terminal, que oferece recursos similares, incluindo a possibilidade de abrir diversas abas, onde cada uma se comporta como um terminal separado. Se você preferir uma alternativa mais simples, procure pelo Xterm.
Na maioria dos casos, ao chamar um programa gráfico através do terminal, você pode passar parâmetros para ele, fazendo com que ele abra diretamente algum arquivo ou pasta. Por exemplo, para abrir o arquivo “/etc/fstab” no Kedit, use:
$ kedit /etc/fstab
Para abrir o arquivo “imagem.png” no Gimp, use:
$ gimp imagem.png
No começo, faz realmente pouco sentido ficar tentando se lembrar do comando para chamar um determinado aplicativo ao invés de simplesmente clicar de uma vez no ícone do menu. Mas, depois de algum tempo, você vai perceber que muitas tarefas são realmente mais práticas de fazer via terminal.
É mais rápido digitar “kedit /etc/fstab” do que abrir o kedit pelo menu, clicar no “Arquivo > Abrir” e ir até o arquivo usando o menu. É uma questão de costume e gosto. O importante é que você veja o terminal como mais uma opção, que pode ser utilizada quando conveniente, para melhorar sua produtividade.

Nenhum comentário: