Usando cores e formatação no Shell Script

Este artigo foi retirado do site Dicas-L http://www.dicas-l.com.br:

Colaboração: Angelo Roberto Bonfieti Junior

Já se deparou com a necessidade (ou vontade) de destacar texto ou simplesmente fazer o output do seu script tornar-se visualmente chamativo ?

Normalmente programadores (especialmente em shell script) não adotam isso por gostarem do texto puro, da linha de comando. Telinha preta 🙂

Todavia, se você é daqueles que acredita que seus scripts podem ficar melhores com alguma “cosmética”, acredite, eles ficam mesmo. Pelo menos visualmente.

Inserir cores e diferenciar texto pode ser interessante quando você quiser destacar um erro, evidenciar diferenças ou, simplesmente, chamar à atenção para algo importante.

Sendo assim, aqui vai uma dica para inserir cores em um script (ou texto):

Essa dica foi testada em vi e funciona legal em terminais que suportam o formato ANSI. Basta que você adicione uma certa sequência ao comando echo para alcançar seu objetivo.

A sintaxe genérica é:

echo "^[[#m"

Onde: ^[ é um caracter especial produzido pressionando Crtl-v e, em seguida, Esc;

O hash (#) é substituído por um número, dependendo do tipo de efeito que voce pretende adicionar ao seu texto;

O segundo [ e a letra m são caracteres normais;

Sendo assim, a sequencia

echo "^[[33mTestando apenas^[[0m"

ira mostrar o texto Testando apenas em amarelo

Enquanto a sequencia:

echo "^[[31m^[[1mTestando apenas^[[0m"

ira mostrar o texto Testando apenas em vermelho e negrito (um vermelho um pouco mais forte)

Para imprimir o resultado de uma variável, basta definí-la corretamente e não permitir que o comando echo a interprete. Assim, segue um exemplo de como imprimir a variável TESTE com fundo azul, texto vermelho, negrito e sublinhado:

TESTE="Testing Only"
echo "^[[4m^[[1m^[[44m^[[31m${TESTE}^[[0m"

Neste exemplo, alem de formatar o texto, também delimitei o início e fim do nome da variável com {} – isso para evitar qualquer erro de interpretação pelo echo e pelos caracteres especiais.

Note que eu sempre termino com a sequencia ^[[0m. Esse é o código passado ao echo que irá retornar seu cursor ao estado “normal”, ou seja, como estava previamente (sem cores).

Abaixo anexo uma pequena tabela C de várias cores e formatos. Existem mais códigos, mas esse são os que eu mais utilizo. Sugiro que, se houver tempo e disposição, você descubra as outras combinações e possibilidades… 😉

Tabela de códigos:

CORES DE TEXTO

PRETO30
VERMELHO31
VERDE32
AMARELO33
AZUL34
MAGENTA35
CIANO36
BRANCO37

CORES DE FUNDO

PRETO40
VERMELHO41
VERDE42
AMARELO43
AZUL44
MAGENTA45
CIANO46
BRANCO47

MODOS ANSI

NORMAL0
NEGRITO1
BAIXA INTENSID2
ITALICO3
SUBLINHADO4
PISCANDO5
PISCA RAPIDO6
INVERSO7
INVISIVEL8

Note que alguns comandos nativos do Unix, como cat e pg, por exemplo, já mostram o resultado formatado, ou seja, colorido. Outros comandos, como more irão mostrar o código completo. O interessante, aqui, é notar que no último exemplo (com variável), o cat naquele script exibira:

TESTE="Testing Only"
echo "${TESTE}"

Onde o texto ${TESTE} já será mostrado colorido.

Mas note também que um simples (e famoso) Crtl-c dessa sequência, seguido de Ctrl-v no vi não irá funcionar. Isso porque os caracteres ^[ são especiais e não um texto puro. Assim, é necessário que eles sejam “passados” para o vi como tal… copiar o arquivo, ou fazer um cat dele direcionar a saida para outro arquivo, no entanto, funcionam perfeitamente.

Boa programação e boa diversão 🙂

Posted in Sem categoria

Longhorn rodar? aplica??es UNIX

A Microsoft est? incluindo seu Services for Unix (SFU) como um add-on integral do Windows Longhorn.
SFU ? atualmente um agregado gratuito que permite que aplica??es e scripts UNIX rodem na plataforma Windows.

Jason Zions, um arquiteto de solu??es da Microsoft, disse que h? vers?es do desenvolvimento do SFU que permitem um ?nico processo de funcionar o c?digo das bibliotecas de Windows e de Unix. Atualmente esta caracter?stica, que facilitaria as tarefas de integra??o, n?o est? dispon?vel no SFU. Zions disse: “n?s temos trabalhado em vers?es de pesquisa que resolveriam esse problema particular. N?o me surpreenderia ver que a potencialidade aparece em uma futura libera??o do Windows.”

Posted in Sem categoria

Ex-engenheiros da Red Hat apresentam nova distribui?

Dois antigos engenheiros de software da Red Hat criaram uma nova distribui??o Linux para empresas.
A distribui??o de c?digo livre da companhia Specifix, fundada ano passado, lan?ar? vers?o alfa, ainda sem nome definido, nas pr?ximas semanas. Segundo a companhia, a vers?o final estar? dispon?vel em dezembro.
Fonte: http://www.idg.es/pcworld/noticia.asp?idn=36888

Posted in Sem categoria

EUA criam maior supercomputador com GNU/Linux

A Silicon Graphics est? construindo o maior supercomputador que executa sistema operacional GNU/Linux j? criado at? agora.
O Altix foi encomendado pelo Centro Nacional para Aplica??es de Supercomputadores (NCSA, em ingl?s), ?rg?o norte-americano, e rodar? o GNU/Linux em 1.024 processadores Intel Itanium 2, com tr?s terabytes (TB) de mem?ria compartilhada. O aparelho poder? fazer seis trilh?es de opera??es em pontos flutantes por segundo (TFLOPS, em ingl?s).

Rob Pennington, diretor interino da NCSA, afirmou que a nova m?quina ser? bem diferente de outros equipamentos existentes, que incluem supercomputadores cluster em GNU/Linux.

O novo Altix permitir? aos cientistas um melhor desempenho em trabalhos como an?lise de dados atmosf?ricos, simula??es colis?es de buracos negros e outros eventos de larga escala em evolu??o no universo.

O sistema operacional ser? baseado no Red Hat Enterprise Linux.

Fonte: IDG Now!

Posted in Sem categoria

:. Petrobras usa Linux em cluster

No centro de processamento da Petrobr?s h? um cluster, montado pela IBM, com 252 servidores rodando Linux para executar o importante trabalho de fazer o processamento s?smico, que deve ser feito no in?cio de qualquer projeto de explora??o de petr?leo. O projeto custou US$ 2 milh?es e foi implantado em apenas 3 semanas.

A decis?o de implantar o cluster foi porque era necess?rio acelerar o processamento s?smico, mas com os recursos dispon?veis anteriormente isso n?o seria poss?vel. Antes da implanta??o desse cluster, a Petrobr?s j? usava Linux para essa tarefa, mas a capacidade de processamento era insuficiente.

A reportagem completa est? no Valor Online. ? preciso ser cadastrado no site para ler.

Posted in Sem categoria

:. Revista Copyleft temporariamente parada (15/07/2004)

A Revista Copyleft, rec?m-criada, est? “em estado de hiberna??o” por falta de apoio financeiro. Paulino Michelazzo, o diretor da revista, comunicou:

“O projeto est? parado. Esta ? a resposta simples e direta que dou a todos. Parado por falta de aporte financeiro para a continuidade do projeto, o qual est? acertado com uma empresa paulista chamada Utah Linux Center. Infelizmente esta empresa j? n?o pode dar continuidade ao projeto como programado. (…) Por este motivo, optei por publicar estar carta para que a ansiedade de todos na busca dos pr?ximos n?meros seja acalmada. A parada da revista n?o indica que a mesma “morreu”. O termo justo neste momento ? “em estado de hiberna??o” at? que se consigam novos patrocinadores ou investidores para que o projeto possa ser levado adiante.”

Fonte: http://brlinux.linuxsecurity.com.br/noticias/002886.html

Por Marcos Paulo Nogueira.

Posted in Sem categoria

Instalando KDE 3.2

Para instalar o KDE 3.2 no Debian 3.0 Stable adicione no seu arquivo sources.list os seguintes mirrors:

deb http://security.debian.org/ stable/updates main

deb http://ftp.us.debian.org/debian/ unstable main
deb-src http://ftp.us.debian.org/debian/ unstable main

#
apt-get update ; apt-get install kdebase konqueror kdemultimedia kde-i18n-ptbr

* kdei18n-ptbr = instalar kde com suporte a linguagem Portugu?s/Brasil.

*

Posted in Sem categoria

Usando comando screen

Screen Uma Ferramenta ?til

? Ricardo Iramar dos Santos – Agent Smith

01/04/2004 – Vers?o 0.1

Introdu??o

Screen ? um gerenciador de janelas similar aos terminais virtuais do Linux com muito mais recursos desenvolvido pelo projeto GNU.

Basicamente eu o utilizo para duas finalidades, para poder abrir clients de irc e IMs em janelas separadas numa mesma sess?o ssh e compartilhar sess?es ssh para aprender e/ou ensinar. Al?m dessas um outra finalidade interessante ? deixar algum processo/compila??o rodando em uma janela e depois remotamente ver o andamento.

Mas o Screen n?o se limita somente a isso, na man page dele voc? ir? encontrar muitas informa??es ?teis. Bem, vamos ao que interessa …

Pr?-requisitos

A id?ia aqui n?o ? ensinar como instalar o Screen e sim explorar alguns de seus recursos. Portanto se voc? ainda n?o tem ele instalado (provavelmente tem) acesse o site http://www.gnu.org/software/screen/screen.html e siga as docs para instalar.

Utilizando

Vamos dizer que voc? pretende acessar uma m?quina remotamente via ssh e abrir seu client de irc (eu uso irssi http://irssi.org, e voc??) e um IM client (ex. centericq http://konst.org.ua/centericq/) pois n?o ? em todo lugar que voc? ter? acesso a isso.

Logado na m?quina remota execute o Screen:

agent@maplefire:~$ screen

U?, mas n?o aconteceu nada? ? um outro jeito de limpar a tela? N?o, execute “ps aux” e veja o processo do screen rolando, isto ?, voc? j? est? em uma janela do Screen.

T?, e da?? Calma, vamos ao primeiro comando b?sico:

agent@maplefire:~$ screen -ls
There is a screen on:
483.pts-0.maplefire (Attached)
1 Socket in /home/agent/.screen.

agent@maplefire:~$

Voc? acabou de listar as sess?es abertas do screen onde a sess?o marcada com (Attached) ? a sess?o que voc? est? agora. Al?m de multiplas janelas voc? pode abrir multiplas sess?es, observe que este comando lista as sess?es e n?o as janelas.

Vamos criar a segunda janela virtual porque a primeira j? abre por default quando voc? inicia o Screen. Para isso pressione “Ctrl+a” simultan?amente, solte e em seguida pressione “c”. Mais uma forma de limpar a tela? N?o, agora voc? na segunda janela virtual do screen. Para facilitar estarei usando formas contra?das de escrever esses comandos similar a man page, este comando por exemplo de criar uma nova janela em uma forma contra?da ficaria assim “C-a c”, manjo?

Familiarize com essas teclas de atalho pois todas s?o bem similares baseadas em pressionar o Ctrl mais uma letra e seguida por outra. Provavelmente todos os comandos podem serem executaods via screen seguido de algum par?metro, entretanto eu prefiro os atalhos por serem muito mais r?pidos.

Para listar as janelas utilize o atalho “C-a w”. Pow! Cad? a lista de janelas? Tamb?m achei uma p?ssima id?ia colocar isso no t?tulo da janela, isso se estiver usando um WM, caso contr?rio (console) ir? aparecer no canto inferior esquerdo da tela. A janela na qual voc? esta ? marcada com um *.

Para navegar entre as janelas utilize o atalho “C-a n” (n de next, isto ?, pr?xima janela) e “C-a p” (p de previous o mesmo que anterior). Pronto! Agora voc? j? pode abrir quantas janelas quiser e/ou precisar e deixar qualquer processo rolando nelas.

Mas como fechar a sess?o ssh sem finalizar a(s) sess?o(?es) do Screen? Execute “C-a d” que ir? rertornar [detached] que quer dizer descolar. Execute “screen -ls” e voc? ver? a a sess?o que voc? acabou de sair marcada como (Detached).

Vamos dizer que voc? foi trabalhar e do escrit?rio voc? quer ver o andamento dos processos deixados nas janelas ou acessar seus clients. Acesse a m?quina via ssh novamente e digite “screen -r” vual?! Agora vamos compartilhar essa sess?o com um amigo seu.

Pe?a para seu amigo acessar a sua m?quina via ssh com o mesmo user que voc? esta logado. Assim que ele logar pe?a para executar “screen -x”. Com este comando ele ir? se conectar a mesma sess?o que voc? esta e desta forma tudo o que voc? e ele fizerem ser?o visto pelos dois. Voc? pode conectar quantas pessoas quiser a uma sess?o do Screen. COOL!!!

Para fechar uma janela basta digitar “exit” na ?ltima janela o Screen ser? finalizado. Somente com esses comandos b?sicos j? ? poss?vel fazer muita coisa agora se voc? der uma olhada na man page (man screen) ver? que voc? n?o aprendeu nada sobre o screen.

Conclus?o

Exagerando eu diria que o c?u n?o ? o limite e sim a sua imagina??o pois com a quantidade de possibilidades que o screen oferece somente olgu?m muito inocente para n?o perceber a sua utilidade. N?o esque?a de visitar a man page e o google, eles s?o seus amigos e n?o v?o te morder.

Refer?ncias

* http://www.gnu.org/software/screen/screen.html
* http://www.google.com.br

Fonte: Dical-L

Posted in Sem categoria