Introdução
O terminal, a ferramenta mais utilizada no
Linux, onde podemos instalar programas, atualizar o sistema, verificar processos, criar diretórios, criar usuários e muito mais. Sendo a melhor coisa que podemos fazer no terminal é a criação de scripts, com scripts podemos fazer de tudo que o Linux oferece de maneira prática, imagine-se digitando diversos comandos para chegar no seu objetivo final. No script todos os comandos já estão digitados, um script é simplesmente um arquivo de texto com vários comandos sequências em que o terminal executa linha por linha.
Muitos programadores criam seus scripts de maneira na qual o usuário final só executa, fazendo com que nenhuma informação aparece na tela, mesmo assim o script cumpre o que promete. Um script bem elaborado mostra mensagens na tela mostrando que a execução terminou com sucesso ou que deu alguma coisa errada ou até mesmo, pedi para o usuário digitar alguma informação no terminal.
Sempre da para melhorar mais, e uma dessas melhorias é o
tput, com o tput é possível deixar a saída do comando com fonte colorida (foreground), com uma cor de fundo (background), a fonte em negrito, itálico e sublinhado ou até mesmo com o texto piscado.
Como usar o comando tput
Agora mostrarei alguns comandos utilizando o tput.
Deixa a fonte do texto com a cor vermelha:
tput setaf 1 ; echo "Vermelho" ; tput sgr0
Vamos entender o que aconteceu, primeiro chamo o comando tput depois coloco a opção setaf, o setaf indica que a cor da fonte será substituída, depois o número 1 que indica vermelho. Continuando o ponto e vírgula para executar o próximo comando, echo para mostrar uma mensagem na tela seguido de "Vermelho" que será a mensagem a ser exibida na tela. Continuando de novo com o ponto e virgula, colocando o comando tput de novo com a opção sgr0, a opção sgr0 serve para limpar todas as cores definidas com setaf 1.
Nesse exemplo o fundo fica amarelo e a fonte vermelha:
tput setab 11 setaf 1 ; echo "Fundo Amarelo" ; tput sgr0
Repare no primeiro tput onde pode ser colocado duas opções em sequência, setab 11 deixa o fundo amarelo, enquanto setaf 1 deixa a fonte vermelha.
Comando que retorna o total de cores no terminal:
tput colors
Ao total são 256 cores sendo que começa do 0 até 255.
Comando para sublinhar uma palavra na saída do terminal:
echo -n "Essa " ; tput smul ; echo -n "palavra" ; tput sgr0 ; echo " está sublinhada."
Deixa a palavra em negrito:
echo -n "Essa " ; tput bold ; echo -n "palavra" ; tput sgr0 ; echo " está em negrito."
Deixa a palavra em itálico:
echo -n "Essa " ; tput sitm ; echo -n "palavra" ; tput sgr0 ; echo " está em itálico."
Deixa a palavra piscando:
echo -n "Essa " ; tput blink ; echo -n "palavra" ; tput sgr0 ; echo " está piscando."
Um detalhe muito importante é colocar o comando tput sgr0 após personalizar a palavra, caso contrário o resto ficará personalizado, até mesmo o nome_user@nome_pc também ficará personalizado.
Agora prepare-se para encher de cores o seu terminal, isso é uma demonstração de todas as cores no terminal.
Enche o seu terminal de cores BackGround bugadas:
for i in $(seq 0 255); do tput setab $i; printf "BackGround %03d\n" $i; tput sgr0; done
Nesse exemplo mostro o background todo colorido em um laço de repetição, infelizmente não saiu como o esperado, após algumas iterações o terminal fica todo bugado. Para resolver isso é só colocar um comando após o tput sgr0, nunca finalize o laço com sgr0, quando estiver utilizando setab no seu script.
Enche o seu terminal de cores BackGround padronizadas:
for i in $(seq 0 255); do tput setab $i; printf "BackGround %03d" $i; tput sgr0; echo; done
Repare que nesse exemplo removi o (\n) do printf e coloquei o echo no final para pular linha a cada iteração.
Enche o terminal de ForeGround com cores padronizadas:
for i in $(seq 0 255); do tput setaf $i; printf "ForeGround %03d\n" $i; tput sgr0; done
Nesse exemplo com cor da fonte (foreground) não foi necessário colocar um comando após o sgr0, os bugs só acontecem nas cores de fundo (background).
Script
Um script que mostra algumas cores.
#!/bin/bash
for i in $(seq 0 16); do
tput setab $i
printf "BackGround %02d" "$i"
tput sgr0 ; echo -n " | "
tput setaf $i
printf "ForeGround %02d" "$i"
tput sgr0 ; echo
done
Agora nesse script mostro como usar o tput interagindo com o usuário de maneira simples.
#!/bin/bash
clear
echo -n "1 - " ; tput setaf 1 bold
echo -n "Vermelho " ; tput sgr0
tput setab 1 ; echo " " ; tput sgr0
echo -n "2 - " ; tput setaf 2 sitm
echo -n "Verde " ; tput sgr0
tput setab 2 ; echo " " ; tput sgr0
echo -n "3 - " ; tput setaf 4 smul
echo -n "Azul" ; tput sgr0 ; echo -n " "
tput setab 4 ; echo " " ; tput sgr0
echo
read -p "Qual a sua cor preferida ? : " Escolha
if [ $Escolha -eq 1 ]; then
clear
echo -n "Sua cor preferida é " ; tput setaf 1 bold
echo "vermelho" ; tput sgr0
elif [ $Escolha -eq 2 ]; then
clear
echo -n "Sua cor preferida é " ; tput setaf 2 bold
echo "verde" ; tput sgr0
elif [ $Escolha -eq 3 ]; then
clear
echo -n "Sua cor preferida é " ; tput setaf 4 bold
echo "azul" ; tput sgr0
else
clear
tput blink ; echo -n "$Escolha " ; tput sgr0
tput smul ; echo "opção inválida!" ; tput sgr0
fi
Finalizando
O tput é uma maneira de personalizar a saída do terminal, existe outras simplesmente usando o comando echo ou printf, infelizmente com os comandos echo ou printf, tem que ser colocado um monte de caracteres e decorar um tabela de cores para fazer a personalização.
Exemplo usando o comando echo:
echo -e "\033[5;3;31;107m Texto vermelho, piscante, itálico com fundo branco \033[m"
Ainda existe algumas outras opções com o tput, como capturar a quantidade de linhas e colunas no terminal.
Exemplo de uma linha amarela exata no terminal:
tput setab 11; printf "%$(tput cols)s\n" ; tput sgr0
Agradecimentos
Em primeiro lugar minha família, toda a comunidade linux por compartilhar conhecimento e ao Julio Cezar Neves, tudo que mostro aqui aprendi no livro dele PROGRAMAÇÃO SHELL LINUX. E finalmente a você, sem você para ler, tudo o que eu digitei estaria perdido no limbo.
1. Introdução