Linux: Aplicativos em modo texto

Por: Rodrigo Amar

Nem só de cat e ls vive o terminal. Por estranho que possa parecer, existem diversos aplicativos elaborados para o modo texto, que cobrem quase todas as principais áreas. Você poderia questionar a utilidade destes aplicativos, já que, afinal, existem aplicativos gráficos muito mais elaborados. Apesar disso, os aplicativos em modo texto conservam algumas vantagens importantes. Eles são mais leves, o que permite que sejam usados até mesmo em máquinas muito antigas, podem ser usados remotamente (via SSH ou outros meios) mesmo através de conexões lentas e podem também serem usados dentro de shell scripts, onde é possível combinar o trabalho de diversos comandos para realizar tarefas complexas.

Um gerenciador de arquivos completo como o mc consome apenas 2 MB de memória RAM, enquanto o centericq (cliente ICQ, AIM, etc.) consome pouco mais de 500 KB. Graças ao GPM, é possível utilizar o mouse na maior parte dos aplicativos de modo texto e muitos são baseados na biblioteca ncurses, o que permite incluir janelas, menus, etc., o que torna seu uso muito similar ao dos programas gráficos. Ao contrário da crença popular, pouca gente ainda roda aplicativos em terminais de texto puro, quase sempre eles são utilizados dentro de um terminal gráfico, lado a lado com outros aplicativos.

Vamos a alguns exemplos:

Navegadores: Entre os navegadores em modo texto, as atenções se dividem entre o Links e o Lynx, que apesar do nove parecido, são dois softwares bastante diferentes. Além de serem uma opção para casos em que você precise pesquisar alguma coisa em uma máquina onde o ambiente gráfico não está funcionando, eles servem também como opções de navegadores leves, que você pode usar em situações diversas. Por não carregarem imagens, arquivos em Flash ou perfumarias diversas, eles são uma opção para momentos em que a conexão está lenta. Para usá-los, basta chamá-los no terminal, seguido pela página desejada, como em:

$ links gdhpress.com.br

ou

$ lynx guiadohardware.net

A grande diferença entre os dois é que o Lynx reformata as páginas em uma única coluna (assim como fazem muitos navegadores para celular), enquanto o Links se esforça para manter a formatação original. De uma forma geral, o Lynx se sai melhor quando você está em um terminal de texto puro, com uma resolução de tela baixa e sem mouse, enquanto o Links é mais agradável de usar quando você está usando o navegador dentro de um terminal gráfico. Apesar de rodar no terminal, o Links suporta o uso do mouse, de forma que você pode navegar clicando nos links, como faria em qualquer navegador gráfico:

O Lynx oferece a vantagem de incluir um melhor suporte a Javascript, permitindo acessar um volume muito maior de páginas que exigem login ou usam recursos mais específicos. Ele é também capaz de utilizar as cores para diferenciar os elementos do texto, enquanto o Links é basicamente monocromático.

No Links, pressione F10 para abrir o menu de funções. Para que ele exiba os caracteres acentuados, mude o charset para “ISO 8859-1” no “Setup > Character Set”. No mesmo menu está disponível também a opção de mudar a linguagem para Português do Brasil.

Em ambos, você pode usar as setas para a esquerda e direita para voltar e avançar e a tecla “q” para sair. Para abrir uma nova página, pressione a tecla “g”; para rolar a página use “Page Up” e “Page Down” e, para navegar entre os links, use os direcionais para cima e para baixo ou a tecla Tab.

Algo que pouca gente sabe é que o links pode ser utilizado também como um navegador gráfico (mesmo em um terminal de texto puro), tirando proveito do uso do frame-buffer. Para isto, basta chama-lo com o comando “links -g”.

Na maioria das distribuições, o pacote é compilado sem suporte a gráficos, por isso a opção não funciona (seria necessário baixar o código fonte e recompilar usando a opção “–enable-graphics” ao rodar o ./configure), mas no caso do Slackware é necessário apenas que o frame-buffer esteja ativado.

Outra dica, desta vez sobre o lynx é que ele pode ser usado como uma forma simples de converter páginas Web para arquivos de texto, que podem ser lidos no seu smartphone ou mp3player ou transportadas mais facilmente. Para isso, use o comando:

$ lynx -dump gdhpress.com.br > gdh.txt

Isto salvará a página index do site no arquivo texto.txt. Basta substituir o link pelo da página desejada. O arquivo de texto fica com a mesma formatação que você veria ao visualizá-lo em um terminal com o lynx. Os links no meio do texto são substituídos por números de referência ([01], [02], etc.) e as url’s aparecem no final do texto. Esse tipo de flexibilidade faz com que o lynx seja muito usado em shell scripts, sempre que é necessário extrair alguma informação de uma página web.

Outra dica é que você pode visualizar arquivos de imagem no terminal usando o comando fbi, como em:

$ fbi imagem.jpg

Ele exibe a imagem no terminal usando o frame buffer, assim como ao usar o “links -g”. Para voltar ao terminal, pressione Esc.

Download de arquivos: O wget é um gerenciador de downloads bastante competente, que oferece um grande volume de opções, todas usadas via linha de comando. Isso faz com que ele seja uma opção muito prática para download de arquivos em geral, já que você pode copiar a URL

O uso mais básico é usar o wget seguido da opção “-c”, que faz com que ele continue o download caso interrompido, como em:

$ wget -c link

Se precisar interromper o download, pressione Ctrl+C para parar e em seguida use o histórico (seta para cima) para executar novamente o comando e continuar de onde parou. Caso o arquivo já esteja completo, ele exibe um aviso e não faz nada.

Se você precisar baixar vários arquivos em sequência, como em casos em que você precisa baixar os vários CDs de uma distribuição, use o ponto e vírgula para separar vários comandos do wget, como em:

$ wget -c url1; wget -c url2; wget -c url3; wget -c url4

Isso faz com que os 4 arquivos sejam baixados em sequência, um de cada vez. Se quiser falar difícil, você pode fazer a mesma coisa usando:

$ for i in url1 url2 url3 url4; do wget -c $i; done

Este é na verdade um mini shell script, que faz com que ele execute o comando “wget -c” para cada uma das urls especificadas, armazenando o valor de cada uma na variável “$i”. Esta é uma função simples, que é muito usada em situações que você precisa rodar o mesmo comando repetidamente.

Continuando, caso a conexão esteja ruim e a transferência esteja parando freqüentemente, você pode especificar um timeout usando a opção “-T”, ela faz com que o wget reinicie a transferência caso não receba dados dentro do tempo especificando (em segundos), repetindo o processo até conseguir baixar o arquivo, como em:

$ wget -c -T 30 link

Uma dica é que você pode selecionar a URL do arquivo a ser baixado na janela do navegador e colar o texto no terminal usando o botão central do mouse. Se você estiver usando o konsole ou o gnome-terminal, você pode também colar o texto da área de transferência clicando com o botão direito sobre o terminal e usando a opção “colar”.

Mensagem: Por estranho que possa parecer, você pode usar o MSN, ICQ e até mesmo o Gtalk (que na verdade utiliza o protocolo Jabber) em modo texto, graças ao CenterICQ, disponível no: http://thekonst.net/centericq/

Embora a interface não seja exatamente simples de usar, ele é surpreendentemente completo do ponto de vista dos protocolos suportados, oferecendo suporte a todas as principais redes. Você encontra o pacote para o Slackware no http://www.slacky.eu.

Outro exemplo de cliente multiprotocolo é o Pebrot, disponível no: http://pebrot.sourceforge.net/. A interface é muito mais simples, mas ele oferece como ponto forte a possibilidade de ser controlado através de comandos, o que permite usá-lo dentro de shell scripts. Com isso, você pode criar bots simples para monitorar o status dos contatos, mandar mensagens automáticas e assim por diante.

MP3 e CD: O utilitário mais simples para tocar arquivos de áudio via terminal é o mpg123, que pode ser chamado diretamente no terminal, seguido do nome do arquivo a tocar, como em:

$ mpg123 arquivo.mp3

Você também pode tocar uma playlist através do comando “mpg123 -@ arquivo”. A playlist pode ser gerada através de vários programas tocadores de mp3. No XMMS, por exemplo, você precisa apenas clicar com o botão direito sobre a janela do editor de playlists e em “salvar lista” para gerar a playlist da lista de faixas atual. Se por acaso o comando não estiver disponível, procure pelo pacote “mpg123”.

Uma opção mais elaborada é o Orpheus (do mesmo criador do CenterICQ) que pode ser baixado no http://konst.org.ua/orpheus. Ele é capaz de tocar tanto MP3 quanto CDs de áudio e oferece uma interface pseudo-gráfica, baseada no ncurses, com menus e tudo mais.

Gerenciamento de arquivos: Em termos de gerenciamento de arquivos, o mc é sem dúvidas a melhor opção. Ele é também baseado no ncurses e suporta o uso do mouse. A interface é baseada em teclas de atalho e é um pouco complicada de usar no início, mas o volume de opções disponíveis permite executar muitas operações que não são possíveis ou não são práticas mesmo em gerenciadores gráficos, como o Konqueror e o Nautilus. Essa combinação de funções e leveza faz com que ele ainda seja bastante utilizado:

O mcedit (o editor de textos) surgiu originalmente como um módulo do mc, destinado a visualizar aquivos de texto, mas eventualmente acabou ganhando vida própria, passando a ser usado separadamente. De qualquer forma, os dois continuam ligados: para instalar o mcedit, você precisa instalar o pacote “mc”, que inclui também o gerenciador de arquivos.

Screenshots: Você pode tirar screenshots via linha de comando usando o import, utilitário incluído na maioria das distribuições. Naturalmente ele se aplica apenas quando você estiver usando um terminal dentro do modo gráfico. A sintaxe básica é:

$ import tela.png

Ao executar o comando, o botão do mouse virará um cursor. Desenhe um retângulo na parte da tela que você deseja capturar e ela será automaticamente capturada e salva no arquivo “tela.png” no diretório corrente. Se você preferir capturar o conteúdo de uma janela, basta clicar sobre a barra de título. Se por outro lado você quiser um screenshot da tela toda, não apenas de uma janela, adicione a opção “-windows root”, como em:

$ import -window root tela.png

O formato de compressão das imagens é especificado diretamente no nome do arquivo. Nos exemplos salvei as imagens em .png, mas para salvá-las em .jpg basta alterar a extensão do arquivo gerado, “import imagem.jpg” por exemplo.

A principal vantagem do import é que ele pode ser chamado a partir de scripts. Você pode por exemplo agendar um trabalho no cron para tirar um screenshot a cada minuto por exemplo e assim poder monitorar o que está sendo feito no PC.

Bittorrent: Você pode baixar arquivos via bittorrent em modo texto usando o btdownloadcurses e o btlaunchmanycurses, que são destinados a, respectivamente, baixar apenas um arquivo e baixar diversos arquivos .torrent dentro de uma pasta. A sintaxe para especificar opções adicionais é um pouco complicada e você vai sentir falta de algumas funções especiais disponíveis nos clientes gráficos mais elaborados, como a possibilidade de encriptar a transmissão, mas eles atendem bem à função básica, que é baixar os arquivos. Ambos fazem parte do pacote “bittornado”, que no Slackware está disponível dentro da pasta “/extra/bittornado”.

O uso básico é usar o btdownloadcurses seguido pelo arquivo a ser baixado, como em:

$ btdownloadcurses openSUSE-11.0-DVD-i386.torrent

Como de praxe, você não precisa necessariamente digitar o nome do arquivo, pode usar um “ls” e em seguida copiar e colar usando o botão central do mouse, ou simplesmente usar a tecla TAB para completar o nome do arquivo. Caso precise baixar arquivos com caracteres especiais, coloque o nome entre aspas simples (‘), isso faz com que o shell deixe de interpretar os caracteres especiais. Para encerrar o download, pressione Ctrl+C.

Caso precise baixar vários arquivos de uma vez, coloque todos dentro de uma pasta e, dentro dela, use:

$ btlaunchmanycurses ./

Ele monitora o conteúdo da pasta, ativando novos arquivos que forem copiados para dentro dela e desativando o compartilhamento de arquivos removidos. Isso permite que você deixe um terminal aberto, rodando o btlaunchmanycurses e vá simplesmente copiando novos arquivos .torrent que quiser baixar para dentro delas, sem precisar fechar e abrir novamente o btlaunchmanycurses para cada alteração.

Para limitar a taxa de upload, adicione a opção “–max_upload_rate”, seguida pela taxa máxima desejada (em kbytes), como em:

$ btdownloadcurses –max_upload_rate 32 openSUSE-11.0-DVD-i386.torrent

ou:

$ btlaunchmanycurses ./ –max_upload_rate 16

Como pode ver, no caso do btdownloadcurses, o parâmetro vem antes do nome do arquivo e no caso do btlaunchmanycurses vem depois. O bittornado é uma versão aprimorada dos clientes bittorrent originais, que fazem parte do pacote “bittorrent”. O pacote inclui também outros utilitários relacionados, como o “bt-t-make” (usado para criar torrents) e o “bttrack” (que permite compartilhá-los, usando seu PC como tracker), além do “btdownloadgui”, que é um cliente gráfico.

Vídeo: O Mplayer é um dos players de mídia mais usados no Linux. Existem diversas interfaces para ele, tais como o Gmplayer e o Kmplayer, mas na verdade o Mplayer pode ser usado diretamente via linha de comando, basta usar o comando “mplayer”, seguido do arquivo a exibir, como em:

$ mplayer video.avi

Para exibir um DVD (para assistir DVDs protegidos, é necessário que o pacote libdvdcss esteja instalado), o comando básico é:

$ mplayer dvd://1

A página de manual do mplayer (man mplayer) inclui um volume absurdo de parâmetros e opções que podem ser adicionados. Para assistir o DVD com o áudio em Inglês e as legendas em Português, abrindo o filme diretamente, sem passar pelo menu inicial, o comando seria:

$ mplayer dvd://1 -alang en -slang pt

Originalmente, executar estes comandos faz com que ele abra uma nova janela e passe a exibir o filme, como qualquer outro aplicativo gráfico. A linha de comando no caso serve apenas para controlar o aplicativo.

A parte engraçada começa quando você começa a brincar com as opções de saída do Mplayer, que permitem que ele seja usado mesmo em um terminal de texto puro. Algumas mini-distribuições, como, por exemplo, o emovix, utilizam estas opções para exibirem vídeos mesmo sem ter o X instalado. Alguns exemplos de comandos para assistir aos vídeos a partir do modo texto são:

$ mplayer -vo svga filme.avi

Este comando usa o driver SVGA, que funciona na maioria das placas, exibindo o filme em tela cheia. Para usá-lo, é necessário que os módulos “svgalib” e “svgalib_helper” estejam carregados. Caso o mplayer reclame que não consegue abrir o device “/dev/svga”, experimente carregá-los usando o comando “modprobe”.

$ mplayer -vo vesa filme.avi

Este segundo comando usa o driver VESA, que funciona em algumas placas que não são compatíveis com o driver SVGA.

$ mplayer -vo fbdev filme.avi

Esta terceira opção é baseada no uso do frame-buffer, o mesmo recurso que é usado para exibir imagens no terminal. O uso de processamento é maior que no VESA e no SVGA, mas isso não é problema para as máquinas atuais. A principal dica é que para usar a opção “-vo fbdev”, o lilo ou grub deve ter sido configurado para usar 16 bits de cor (os valores “785”, “788” ou “791”). O Slackware usa 256 bits por padrão, o que faz com que o Mplayer exiba um erro e aborte a exibição.

$ mplayer -vo aa filme.avi

Se você estava achando estranho assistir vídeos diretamente no terminal, se prepare para o driver mais curioso. A opção “-vo aa” faz com que o vídeo seja exibido usando caracteres de texto, transformando o vídeo em uma espécie de ASCII art anabolizado. Ela na verdade não tem muito uso prático, já que a qualidade é muito ruim, mas não deixa de ser um truque interessante:

Sobre o Autor

Redes Sociais: