shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: cores corre��o


From: moysespr
Subject: Re: cores correção
Date: Mon, 12 Jan 2004 22:21:13 -0800 (PST)

Passei uma função para mostrar as cores. Ela está incompleta. Bastou usar a
função do Aurélio para ver as falhas. Infelizmente so fiz isso depois de
postar.

Assim, descobri que não sabia nada de códigos de escape e fui dar uma ligeira
estudada. Descobri que para varrer continuamente todas as faixas o resultado
não caberia na tela, além de ser ruim aos olhos. Bem, só de teimoso, reescrevi
a função e senti falta de outra (cor), que agora já aproveito para usar na
primeira (cores). Ei-las, caso alguém tenha interesse:

---
cores(){ # Mostra cores disponíveis. Usa: echo -en \"\e[4$b;3$f;$t\"m
cor 03;echo -n " Uso:   cor n   onde n é o número mostrado   ou  echo \
-ne \"\\e[3f;4b;t\"   onde ";echo -e "\e[0m";cor 03;echo -n " f=algarismo1, \
b=alg.2 e t=alg.3\; é possível ter efeito após o \"t\", de mais  ";\
echo -e "\e[0m";cor 03;echo " 2 algarismos simultaneos: 4=underline \
5=blink, dependendo do term / xterm    "
n=0;b=-1;while [ $[b++] -lt 7 ];do \
 for t in "" 1;do f=-1;while [ $[f++] -lt 7 ];do V="$f$b$t  "
   cor $f$b$t;echo -n "${V:0:3}";echo -ne "\e[0;0m  ";
   [ $[n++] -gt 14 ]&&{ echo -ne "\e[0;0m""\n\n";n=0;};\
done;done;done
}

cor(){ # Seleciona cor de 2 a 5 digitos listada com a função cores
 [ ${1:0:1} ]&&T="\e[3${1:0:1}";[ ${1:1:1} ]&&T=$T";4${1:1:1}"
 [ ${1:2:1} ]&&T=$T";${1:2:1}";[ ${1:3:1} ]&&T=$T";${1:3:1}"
 [ ${1:4:1} ]&&T=$T";${1:4:1}";[ $T ]&&T=$T"m";echo -en "\e[0m$T"
}
---
Por exemplo, a cor vista como 311, mas sublinhada e piscando, poderia ser
obtida com:
echo -ne "\e[33;41;1;4;5m"
ou com:
cor 31145

Lembrando que os valores de 1 a 8 (no echo) são independentes, e só podem ser
resetados individualmente com valores da faixa 21 a 28. O valor 0 faz o
serviço, mas reseta todos os bits, inclusive das cores. Exemplificando, 33;41
dá uma cor, 33;41;1 intensifica o foreground, apenas 33;41 novamente, não volta
à cor anterior.

Obs.: no meu sistema o term não sublinhou (4) e o xterm não piscou (5).

Achei uma página bem sintética e agradável com sequencias ANSI:
http://www.isthe.com/chongo/tech/comp/ansi_escapes.html

Na função cores, entre as amostras, estou resetando (0), quando na verdade
gostaria de voltar as cores anteriores à chamada dela, além de devolver o
term/xterm no estado original. Alguém sabe como obter as cores atuais?

Espero ter auxiliado os interessados no tema. Se persistirem falhas, agradeço
orientações.

Grato.

__________________________________
Do you Yahoo!?
Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes
http://hotjobs.sweepstakes.yahoo.com/signingbonus


reply via email to

[Prev in Thread] Current Thread [Next in Thread]