Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Feliz Natal 2011 - com Júlio Neves

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 05 de dezembro de 2011

Como faz todos os anos, o Júlio Neves nos presenteia com uma bela árvore de Natal, escrita em Shell, e que de quebra ainda nos ensina alguns truques interessantes. Basta copiar e colar o código abaixo e aproveitar o espírito de Natal.

natal.sh

(Download do código)

  #!/bin/bash
  # Versão 2.0
  # Isso foi feito para mostrar que em shell se
  # pode fazer de tudo, inclusive na tela.
  #
  # Autor: Julio Neves
  #
  
  trap "tput reset; tput cnorm; exit" 2
  function MontaArr
  {
  #  Monta um array Arr[$Lin$Col] (ambas com zeros à esqueda)
  #+ com o caracteres que está naquela posição
      local i
      local l
      for ((i=0; i<${#3}; i++))
      {
          l="${3:i:1}"
          Arr[$(printf "$1%02i" $[$2+$i])]="$l:$4"
      }
  }
  NomeIni=(Julio Neves) # Troque $NomeIni para enviar a amigos, mas
                        # sempre pelo menos 2 e somente 2 nomes ;)
  
  # Preparando nome para escrever no canto inferior direito da tela
  for ((Pos=0; ;Pos++))
  {
      s0=${NomeIni[0]:$Pos:1}
      s0=${s0:- }
      s1=${NomeIni[1]:$Pos:1}
      s1=${s1:- }
      [[ $s0 == ' ' && $s1 == ' ' ]] && break
      Nome="$Nome$s0 $s1"
  }
  
  # UltLin="São os votos de "$Nome" para você e sua família"
  # UltCol=$[($(tput cols) - ${#UltLin}) / 2]
  
                   # Montando a Árvore
  ColLogo=$[$(tput cols)-4]
  LinLogo=$[$(tput lines)-$Pos-1]
  LogoTrab=0
  tput civis
  lin=2
  col=$(($(tput cols) / 2))
  ccnev=$[col - 13]
  c=$((col-1))
  est=$((c-2))
  cor=0
  tput setab 0; clear
  tput setaf 2; tput bold
  for ((i=1; i<20; i+=2))
  {
      tput cup $lin $col
      for ((j=1; j<=i; j++))
      {
          echo -n \*
          MontaArr $lin $[col+j] \* 2
      }
      let lin++
      let col--
  }
  tput sgr0; tput setab 0; tput setaf 3; tput bold
  for ((i=1; i<=2; i++))
  {
      MontaArr $lin $[c+1] mWm 3
      tput cup $((lin++)) $c
      echo mWm
  }
  tput setab 0; tput setaf 7; tput bold
  tput cup $lin $((c - 4)); echo BOAS FESTAS
  MontaArr $lin $[c-3] "BOAS FESTAS" 7
  tput cup $((lin + 1)) $((c - 11)); echo E muito suSHELLso em 2012
  MontaArr $((lin + 1)) $((c - 10)) "E muito suSHELLso em 2012" 7
  # tput cup $((lin + 3)) $UltCol; echo $UltLin
  let c++
  k=1
  
                     # Pendurando as bolas (da árvore, claro!)
  while true
  do
      for ((i=1; i<=35; i++))
      {
                     # Apagando a bola que foi ligada há 35 rodadas atras
          [ $k -gt 1 ] && {
              tput setab 0; tput setaf 2; tput bold
              tput cup ${linha[$[k-1]$i]} ${coluna[$[k-1]$i]}; echo \*
              MontaArr ${linha[$[k-1]$i]} ${coluna[$[k-1]$i]} \* 2
              unset linha[$[k-1]$i]; unset coluna[$[k-1]$i]  # Mantenha limpo o vetor
              }
          li=$((RANDOM % 9 + 3))
          ini=$((c-li+2))
          fim=$((c+li+2))
          co=$((RANDOM % (li-2) * 2 + 1 + ini))
          tput setab 0; tput setaf $cor; tput bold   # Troca cor das bolas
          tput cup $li $co
          echo o
          linha[$k$i]=$li
          coluna[$k$i]=$co
          MontaArr $li $co o $cor
          sh=1
          for l in S H E L L
          do
              tput cup $((lin+1)) $((c-3+sh))
              echo $l
              let sh++
          done
  # Olha a neve
          for ((n=0; n<15; n++))
          {
              [ "${nev[n]}" ] || {
                  nev[n]=$[$RANDOM % 12 + 1]$(printf "%02i" $[RANDOM % 28 + ccnev])
              }
              lnev=$[nev[n] / 100]
              cnev=$[nev[n] % 100]
              idx=$lnev$(printf "%02i" $cnev)
              Antigo=${Arr[10#$idx-100]%:*}
              Antigo=${Antigo:-' '}
              CorAnt=${Arr[10#$idx-100]#*:}
              CorAnt=${CorAnt:-0}
              tput setab 0
              tput setaf $CorAnt
              tput cup $[lnev-1] $[cnev-1]
              echo "$Antigo"
              tput setab 0; tput setaf 7; tput cup $lnev $[cnev-1]; echo .
              let lnev++
              nev[n]=$lnev$(printf "%02i" $cnev)
              [ $lnev -gt 16 ] && {
                  tput setab 0; tput setaf 7; tput cup $[lnev-1] $[cnev-1]; echo " "
                  unset nev[n]
              }
              tput setaf $[n%7+1]
              tput cup $[LinLogo+LogoTrab] $ColLogo
              echo "${Nome:$[LogoTrab*3]:3}"
              (( LogoTrab++ == Pos-1)) && {
                  LogoTrab=0
                  }
          }
          cor=$(((cor+1)%8))
      }
      k=$((k % 2 + 1))
  done

Bombando o Shell - Novo livro do Júlio Cezar Neves

A Editora Brasport, lançou mais uma obra do Júlio Cezar Neves, o Papai do Shell, com o título Bombando o Shell - Caixa de Ferramentas Gráficas do Shell Linux.

Como tudo o que o Júlio faz, este livro é extremamente bem escrito e divertido e tem tudo para seguir o caminho de seu outro livro, Programação Shell Linux, que já está na 8ª edição.

Sinopse

Inédito no mercado brasileiro, este livro surge como a única fonte completa de consulta e aprendizado sobre as principais camadas gráficas do Shell. Estudando este profundo mergulho que o autor deu no Dialog, no Kdialog, no Zenity, no Xdialog, no Yad e no seu derivado, porém muito mais completo, YAD, você estará apto a desenvolver interfaces gráficas para seus scripts, melhorando suas aparências.

O Júlio tem colaborado imensamente com a Dicas-L, e já escreveu diversos artigos para a coluna Cantinho do Shell, que foi criada em homenagem a ele.


O que é FreedomBox?

Fonte: Notícias Linux

  • E-mail e de telecomunicações que protege a privacidade e resiste escutas
  • A plataforma de publicação que resiste a opressão e a censura.
  • Uma ferramenta de organização de ativistas democráticos em regimes hostis.
  • Uma rede de comunicação de emergência em tempos de crise.

FreedomBox vai colocar nas mãos do próprio povo e sob a sua voz o controle criptografados e comunicação por texto, a publicação anônima, redes sociais, compartilhamento de mídia, e (micro) blogs.

Saiba mais em http://freedomboxfoundation.org
Indicada por: Izabel Valverde izabelv [arrob} gnome.org
Comente: http://www.noticiaslinux.com.br/nl1322738842.html#comentarios

Veja a relação completa dos artigos de Rubens Queiroz de Almeida

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 2.99/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (292 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

Read in English - Uma Maneira Divertida de Aprender Inglês