Começando

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 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 de 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 para executar tarefas mais complexas (ou filtrar os resultados para localizar informações específicas) e a possibilidade de escrever pequenos programas em shell script.

Por exemplo, para assistir vídeos no meu Nokia E71, preciso convertê-los 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:

for video in *; do
    ffmpeg -i "$video" -f mp4 -vcodec mpeg4 -b 350000 -r 15 -s 320x240 \
    -acodec aac -ar 24000 -ab 128 -ac 2 "$video".mp4
done

Quando executado dentro de uma pasta com vários arquivos de vídeo, o script simplesmente converte todos os arquivos, um 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. 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 a necessidade de usar a interface gráfica) e automatizar tarefas diversas. 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, no qual 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 executar muitas tarefas.

Um dos usos mais básicos para o terminal é simplesmente 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”.

Em muitos exemplos são ensinados 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, nos 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 terminal de texto e voltar para o ambiente gráfico. Outra limitação é que estes terminais não permitem usar aplicativos gráficos.

Na maior parte do tempo, usamos a segunda opção, 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 (similar às abas do Firefox). Se você preferir uma alternativa mais simples, procure pelo Xterm.

Um pequeno complicador com relação ao uso do terminal, e também de editores de texto de uma maneira geral, foi a recente mudança do ISO-8859-15 (o bom a velho ASCII) para o UTF8 como padrão de codificação padrão na maioria das distribuições.

Sempre que você executar scripts, ou acessar outras máquinas remotamente e o terminal passar a exibir caracteres estranhos no lugar dos caracteres acentuados, mude o padrão de codificação na configuração do terminal:

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. Para abrir o arquivo “/etc/fstab” no Kedit, por exemplo, use:

$ kedit /etc/fstab

Para abrir o arquivo “imagem.png” no Gimp, use:

$ gimp imagem.png

Ao chamar algum aplicativo, o terminal ficará bloqueado até que o aplicativo seja finalizado. Você pode evitar isso adicionando um “&” no final do comando, o que faz com que ele seja executado em segundo plano, mantendo o terminal livre.

Se você esquecer de acrescentar o “&” ao abrir um programa, ainda pode “destravar” o terminal pressionando “Ctrl+Z” (que paralisa o programa e te devolve o controle do terminal) e depois usar o comando “bg”, que reinicia o programa em background. Outra opção é simplesmente abrir outro terminal, ou (se estiver usando o konsole ou o gnome-terminal), abrir outra aba. 🙂

Alguns aplicativos exibem mensagens diversas e avisos depois de serem abertos, o que “suja” o terminal, mas sem comprometer o que você estiver fazendo. Se isto te incomodar, você pode adicionar um “&>/dev/null” ao comando, o que descarta todas as mensagens, como em “konqueror /etc & &>/dev/null”.

No começo, faz realmente pouco sentido ficar tentando lembrar do comando para chamar um determinado aplicativo ao invés de simplesmente clicar de uma vez no ícone do iniciar. Entretanto, 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, por exemplo. É 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, e não simplesmente como algo arcaico ou ultrapassado, como muitos pregam.

Vamos então a algumas dicas básicas:

Completando com a tecla tab: Um dos recursos que torna o terminal um ambiente dinâmico é a possibilidade de completar comandos e nomes de arquivos usando a tecla tab do teclado, o famoso autocompletar.

Além de facilitar o uso do terminal, reduzindo brutalmente o volume de caracteres digitados, o autocompletar previne erros nos comandos (afinal, você pode se enganar, mas o computador não) e evita que você precise lembrar dos nomes exatos dos arquivos e dos comandos, já que você pode digitar apenas as primeiras letras e pressionar a tecla tab. Por exemplo, em vez de precisar digitar:

$ md5sum ubuntu-8.10-desktop-i386.iso

… você poderia digitar apenas md5<tab> ub<tab>, ou seja, apenas 8 toques, incluindo o espaço.

Se, por acaso, houver outro comando começado com “md5” ou outro arquivo na mesma pasta começado com “ub”, então o autocompletar completará o comando ou arquivo até o ponto em que as opções forem iguais. Pressionando o tab pela segunda vez, ele exibe uma lista com as possibilidades para que você termine de completar o comando.

Se tivesse os arquivos “ubuntu-8.04-desktop-i386.iso” e “ubuntu-8.10-desktop-i386.iso” na mesma pasta, por exemplo, ele completaria até o “md5sum ubuntu-8.” onde os nomes diferem, e deixaria que você completasse o comando a partir daí.

Histórico: O terminal mantém um histórico dos últimos 500 comandos digitados, o que também acaba sendo muito útil, já que é normal que você repita comandos similares, mudando apenas o nome do arquivo ou outro detalhe.

Para repetir um comando recente, simplesmente pressione as setas para cima ou para baixo até encontrá-lo. Para fazer uma busca, use o comando “history | grep comando”, como em “history | grep cp” para mostrar todas as entradas onde foi usado o comando “cp”.

O “|” (ou “pipe”, que pronunciamos como “páipi”) é muito usado no shell, pois permite combinar vários comandos, fazendo com que a saída de um seja processada pelo outro. No comando anterior, por exemplo, o “history” gera uma longa lista de todos os comandos anteriormente digitados, enquanto o “| grep cp” faz com que o texto seja processado pelo grep, que deixa passar apenas as linhas que incluem o “cp”.

Colando com o terceiro botão: O botão central do mouse, que não tem muita serventia no Windows, permite copiar e colar entre aplicativos ou até mesmo entre aplicativos gráficos e terminais abertos dentro da interface gráfica. Isso substitui o Ctrl+C, Ctrl+V, com a vantagem do comando ser dado com um único clique do mouse. Basta selecionar o trecho de texto, a imagem, ou o que quiser copiar e clicar com o botão central na janela onde quiser colar a seleção. Se você não tiver um mouse de três botões (como no caso de um notebook), pressione simultaneamente os dois botões para obter o mesmo resultado.

Este recurso acaba sendo extremamente útil ao seguir tutoriais ou executar listas de comandos, já que você pode selecionar o comando a executar no navegador ou no editor de textos e colar diretamente no terminal, usando o botão central.

Outra dica é que você pode usar o botão central para colar nomes de arquivos, sempre que precisar usá-los em comandos. Use o “ls” para listar os arquivos da pasta e, em seguida, use o mouse para selecionar e colar os nomes, completando os comandos.

As limitações são que o botão central não funciona muito bem para copiar grandes quantidades de texto, e o texto a ser copiado precisa ficar selecionado durante a operação. Basicamente, você consegue copiar o que puder ser visualizado na tela. Não funciona para copiar 120 páginas de texto do Abiword para o OpenOffice, por exemplo.

Pensando nisso, os desenvolvedores do KDE e do GNOME se preocuparam em incluir sistemas de copiar e colar com um funcionamento semelhante ao do Windows. Você pode selecionar várias páginas de texto do Kword e colar no Kmail, por exemplo, usando o bom e velho Ctrl+C, Ctrl+V. O KDE inclui até um Applet, o Klipper, que multiplica a área de transferência. Você tem vários slots que armazenam todas as últimas operações e pode colar qualquer uma das anteriores, selecionando a desejada através do ícone ao lado do relógio, de maneira bem prática.

Case Sensitive: Salvo poucas exceções, todos os comandos e parâmetros dentro de arquivos de configuração são case-sensitive, ou seja, precisam ser digitados literalmente, respeitando as maiúsculas e minúsculas.

Na maioria dos casos, tanto os comandos quanto os parâmetros suportados por eles utilizam letras minúsculas, mas existem alguns casos de comandos que suportam parâmetros com letras maiúsculas e minúsculas, com resultados diferentes. O comando “ls -s”, por exemplo, mostra o tamanho dos arquivos na listagem, enquanto o “ls -S” mostra os arquivos organizados por tamanho (o maior primeiro), por isso é sempre importante prestar atenção.

Man: Como comentei no início, ninguém pode dizer que sabe tudo sobre todos os comandos do terminal. Para facilitar as coisas, cada comando possui um manual, onde são citados todos os parâmetros e vários exemplos de uso. Todos estes manuais são acessados através de um comando único, o “man”. Para ver as (muitas) opções do “ls”, por exemplo, use “man ls”. Use as setas para rolar a tela e, para sair do manual, pressione a tecla “q”.

O man acaba sendo um componente essencial para quem usa muito a linha de comando, pois mesmo comandos simples, como o “ls”, o “cat” e o “grep”, usados no dia a dia, possuem mais parâmetros do que é possível memorizar, de forma que o man acaba servindo como um guia de consulta rápida. Entretanto, devido à quantidade de parâmetros disponíveis, os manuais de muitos programas são muito longos e complicados. Por isso, muitos suportam o parâmetro “–help”, que exibe uma ajuda resumida, contendo apenas os parâmetros mais usados. Experimente, por exemplo, o “ls –help”.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X