msoliver
(usa Debian)
Enviado em 28/10/2020 - 18:35h
cviniciusaraujo escreveu:
Pessoal, como eu poderia criar pequenas mensagens com bordas usando o Shell Script? Me refiro a alguma palavra ou textos pequenos dentro de um quadrado de acordo com o tamanho do que foi escrito...
Boa noite,
Encontrei este script aqui no meu backup..... Bastante antigo, mas funciona....
Adeque para a sua necessidade...
#!/bin/bash
# caixa.sh - Encaixota um texto qualquer vindo da STDIN
# 2003-07-23 Aurelio Marinho Jargas
#
# Usando caracteres de controle, primeiro desenha uma caixa:
# +----------+
# | |
# | |
# +----------+
#
# Depois coloca o texto recebido via STDIN dentro dessa caixa:
# +----------+
# | O texto |
# | recebido |
# +----------+
#
# A separação do codigo em dois passos permite personalizar
# separadamente a caixa e o texto, podendo-se facilmente
# adicionar cores ou fazer outras formatações.
#
# Copyright: GPL
#
# Configuração do usuário
caixa_largura=60
caixa_coluna_inicio=5
caixa_linha_inicio=5
texto_max_linhas=20
distancia_borda_texto=1
caixa_cor='33;1'
texto_cor='32'
#caixa_cor='33;43' # descomente essa linha para uma surpresa!
#---------------------------------------------------------------------
# Daqui pra baixo não mexa
### Configuração Dinámica
caixa_coluna_fim=$((caixa_coluna_inicio+caixa_largura-1))
texto_coluna_inicio=$((caixa_coluna_inicio+distancia_borda_texto+1))
texto_largura=$((caixa_largura-distancia_borda_texto))
texto=$(fmt -sw $texto_largura)
num_linhas=$(echo "$texto" | wc -l)
total_linhas=$((num_linhas+2)) # texto + bordas horizontais
### Checagem do tamanho do texto
if [ $num_linhas -gt $texto_max_linhas ];then
echo "Texto muito extenso, não vai caber na tela"
exit 1
fi
### Completa a linha horizontal da caixa
#$caixa_largura-2 porque os "cantos" serao feitos com o +
for i in $(seq $((caixa_largura-2))); do
linha_caixa="$linha_caixa-"
done
### Limpa a tela
echo -ne '\033c'
### Desenha a caixa
echo -ne "\033[$caixa_linha_inicio;0H" # pula p/a linha inicial
echo -ne "\033[${caixa_cor}m" # liga a cor da caixa
for i in $(seq $total_linhas); do # para cada linha...
echo -ne "\033[${caixa_coluna_inicio}G" # vai p/coluna inicial
if [ $i -eq 1 -o $i -eq $total_linhas ]; then # 1a ou última linha
echo +$linha_caixa+ # borda horizontal
else # senão
echo -e "|\033[${caixa_coluna_fim}G|" # bordas verticais
fi
done
echo -e '\033[m' # desliga as cores
### Coloca o texto dentro da caixa
echo -ne "\033[$((caixa_linha_inicio+1));0H" # pula p/a linha inicial
echo -ne "\033[${texto_cor}m" # liga a cor do texto
echo "$texto" | while read LINHA; do # para cada linha...
echo -e "\033[${texto_coluna_inicio}G$LINHA" # posiciona e mostra
done
echo -e '\033[m' # desliga as cores
echo
______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando:
lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p' ,
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:
Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.
______________________________________________________________________