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

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

Re: [shell-script-pt] Bem vindo ao Ulisses!


From: Julio C. Neves
Subject: Re: [shell-script-pt] Bem vindo ao Ulisses!
Date: Tue, 16 Jun 2020 10:38:11 -0300

Poxa Alfredo, muito obrigado pelas indicações. Qual é o nome para brincar com ele?
Esse seu e-mail vai gerar um flash back (mas prefiro "varanda da saudade") bastante útil, pois ele encontrará no meu livro o seguinte texto (obviamente todo desindentado pelo gmail):
==================================

Já tinha mandado a décima edição deste livro para a editora quando o Alfredo Casanova, colega da lista shell-script do Yahoo Groups, mandou a seguinte dica para a nossa lista:

Só compartilhando uma funçãozinha que fiz aqui para desenhar caixas de mensagem (só funciona para mensagens com uma linha. Se alguém quiser alterar, fique à vontade)

E nos brindou com esse código:

function DrawBox

{

string="$*";

tamanho=${#string}

tput setaf 4; printf "\e(0\x6c\e(B"

for i in $(seq $tamanho)

do printf "\e(0\x71\e(B"

done

printf "\e(0\x6b\e(B\n"; tput sgr0;

tput setaf 4; printf "\e(0\x78\e(B"

tput setaf 1; tput bold; echo -n $string; tput sgr0

tput setaf 4; printf "\e(0\x78\e(B\n"; tput sgr0;

tput setaf 4; printf "\e(0\x6d\e(B"

for i in $(seq $tamanho)

do printf "\e(0\x71\e(B"

done

printf "\e(0\x6a\e(B\n"; tput sgr0;

}

Seu uso seria da seguinte forma:

$ DrawBox Qualquer frase que caiba no terminal

Qualquer frase que caiba no terminal

Só que essa caixa é azul (tput setaf 4) e as letras são vermelhas, com ênfase (tput setaf 1; tput bold).

Mas observe a tabela a seguir. Ela explica os códigos gerados por esse monte de printf estranho:

O printf

Produz

\e(0\x6c\e(B

\e(0\x71\e(B

\e(0\x6b\e(B

\e(0\x78\e(B

\e(0\x6d\e(B

\e(0\x6a\e(B

Como eu tinha acabado de escrever os exemplos que vimos antes e ainda estava com eles na cabeça, sugeri que o for que ele usou para fazer as linhas horizontais fosse trocado; assim, substituiríamos:

for i in $(seq $tamanho)

do printf "\e(0\x71\e(B"

done

Por:

printf -v linha "%${tamanho}s" ' '

printf -v traco "\e(0\x71\e(B"

echo -n ${linha// /$traco}

Tudo Shell puro, pois o for, o printf e o echo são builtins, mas como o printf dentro do for seria executado tantas vezes quantos traços horizontais houvessem, imaginei que a minha solução fosse um pouco mais veloz.

O código otimizado ficaria assim:

function DrawBox

{

string="$*";

tamanho=${#string}

tput setaf 4; printf "\e(0\x6c\e(B"

printf -v linha "%${tamanho}s" ' '

printf -v traco "\e(0\x71\e(B"

echo -n ${linha// /$traco}

printf "\e(0\x6b\e(B\n"; tput sgr0;

tput setaf 4; printf "\e(0\x78\e(B"

tput setaf 1; tput bold; echo -n $string; tput sgr0

tput setaf 4; printf "\e(0\x78\e(B\n"; tput sgr0;

tput setaf 4; printf "\e(0\x6d\e(B"

printf -v linha "%${tamanho}s" ' '

printf -v traco "\e(0\x71\e(B"

echo -n ${linha// /$traco}

printf "\e(0\x6a\e(B\n"; tput sgr0;

}

Então agora, voltando aos nossos exemplos...

==================================
Abraços,
Julio

» Não tem tempo para fazer um curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?
Somente nesta semana de 15-19/06, as inscrições estarão
abertas para uma nova turma. Veja mais detalhes em:

Também damos treinamento em sua empresa
em qualquer cidadecom certificado e nota fiscal.







Em ter., 16 de jun. de 2020 às 10:15, Alfredo Casanova <atcasanova@gmail.com> escreveu:
Estou enviando um e-mail para testar se um amigo está ou não recebendo os e-mails.

Ontem à noite ele me perguntou "o que tinha que fazer para ficar bom no bash, além de ler o man"

Minha resposta foi:
1) Pare de ler o man e compre o livro do Júlio Neves (ele já fez)
2) Faça ao menos um curso do Júlio Neves (Mandei o link do workshop do Júlio e Rubens, ele já começou)
3) Entre na lista brasileira de shell-script (estamos testando agora)

Vamos ver se o planejamento vai dar certo

--
[]'s
Alfredo Tristão Casanova .͘.
Linux User #228230
tel: +55 61 9655 9619
_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.

reply via email to

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