Texto com bordas usando Shell Script [RESOLVIDO]

1. Texto com bordas usando Shell Script [RESOLVIDO]

Carlos Vinícius
cviniciusaraujo

(usa Ubuntu)

Enviado em 28/10/2020 - 02:48h

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...


  


2. Re: Texto com bordas usando Shell Script [RESOLVIDO]

Osama Jr.
/bin/laden

(usa Void Linux)

Enviado em 28/10/2020 - 18:15h

Tenta assim cara.

#!/bin/sh

stringComBordas() {
str="| $1 |"
bordas=$(echo "$str" | sed 's/./-/g')
echo -e "$bordas\n$str\n$bordas"
}

stringComBordas "$1"


$ ./script.sh 'Hello, world!'


---
echo 1244394795515721490698P | dc


3. Re: Texto com bordas usando Shell Script [RESOLVIDO]

Marcelo Oliver
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.


______________________________________________________________________



4. Re: Texto com bordas usando Shell Script [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/10/2020 - 21:04h


/bin/laden escreveu:

Tenta assim cara.

#!/bin/sh

stringComBordas() {
str="| $1 |"
bordas=$(echo "$str" | sed 's/./-/g')
echo -e "$bordas\n$str\n$bordas"
}

stringComBordas "$1"

$ ./script.sh 'Hello, world!'
echo 1244394795515721490698P | dc

Muito Bom!!!!
Postei o que tinha aqui, e nem pensei no 'caso'.....
Só fiz uma pequena alteração....
borda=$(sed 's/./-/g;s/^./+/;s/.$/+/' <<< "$str");
+------------------------------+
| Text in the box Viva o Shell |
+------------------------------+



______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



5. Re: Texto com bordas usando Shell Script [RESOLVIDO]

Carlos Vinícius
cviniciusaraujo

(usa Ubuntu)

Enviado em 29/10/2020 - 11:19h

/bin/laden escreveu:

Tenta assim cara.

#!/bin/sh

stringComBordas() {
str="| $1 |"
bordas=$(echo "$str" | sed 's/./-/g')
echo -e "$bordas\n$str\n$bordas"
}

stringComBordas "$1"


$ ./script.sh 'Hello, world!'


---
echo 1244394795515721490698P | dc


Deu certo, man! Mas se o que foi passado ter quebra de linhas?


6. Re: Texto com bordas usando Shell Script [RESOLVIDO]

Carlos Vinícius
cviniciusaraujo

(usa Ubuntu)

Enviado em 29/10/2020 - 11:24h

msoliver escreveu:


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.


______________________________________________________________________


Uau! Curti demais, eu encontrei uma forma própria de acordo com minhas necessidades, assim que eu terminar crio um tópico e mando aqui...






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts