sábado, 20 de fevereiro de 2010

Cronômetro em Shell Linux

Este é um script em Shell que simula um cronômetro simples.

O código mostrado aqui é outra tentativa de aprendizado em Shell Linux. Na prática pode não ter utilidade nenhuma, dada sua simplicidade. Mas me ajudou a praticar novos conhecimentos.

Talvez sirva de ajuda pra alguém que também esteja estudando linguagem de terminal.

Código fonte no Pastebin: Clique AQUI

Abaixo o código original. Lembrando que ele pode ser melhor visualizado no Pastebin.

   1.      #!/bin/bash
   2.      #   Cronometro simples feito em Shell.
   3.      #   Script criado apenas para fins de estudo.
   4.      #   Para parar, use um [ctrl] + C.
   5.      #   Autor: Fabio Lima CE
   6.      #   Data: 2009-02-14
   7.       
   8.      #   Inicializacao das variaveis
   9.      SS=0;
  10.      MM=0;
  11.      HH=0;
  12.       
  13.      #   Inicio do 'loop infinito' que atualizara
  14.      # as variaveis a cada segundo.
  15.      #   A condicao 'sleep 1' se encarrega de gerar
  16.      # atrasos de um segundo a cada passagem.
  17.      while (sleep 1)
  18.      do
  19.              #   Testa a quantidade de segundos
  20.              #   Se SS > 59 entao MM++
  21.              if ( test $SS -gt 59)
  22.              then
  23.                      SS=0
  24.                      MM=$(echo "$MM + 1" | bc)
  25.              fi
  26.       
  27.              #   Testa a quantidade de minutos
  28.              #   Se MM > 59 entao HH++
  29.              if (test $MM -gt 59)
  30.              then
  31.                      MM=0
  32.                      HH=$(echo "$HH + 1" | bc)
  33.              fi
  34.       
  35.              #   Testa a quantidade de horas
  36.              #   Se HH > 23 entao Zera todas variaveis
  37.              if (test $HH -gt 23)
  38.              then
  39.                      MM=0
  40.                      HH=0
  41.                      HH=0
  42.              fi
  43.       
  44.              #   Mostra o tempo decorrido depois de atualizado
  45.              #   Opcoes do 'echo':
  46.              #   -n: desabilitar nova linha no final do comando (\n)
  47.              #   -e: habilitar o uso de caracteres de scape (\t, \n, \a \r etc)
  48.              echo -n -e "\rTempo decorrido: $HH h $MM min $SS seg "
  49.       
  50.              #   Acrescenta um segundo
  51.              #   O 'bc' eh uma realiza calculos com inteiros
  52.              SS=$(echo "$SS + 1" | bc)
  53.       
  54.      done

Bateria de Notebooks em Shell Linux

Estou disponibilizando um script para verificação de status de bateria em notebooks.

Esse pequeno programa é escrito para Shell, mais especificamente Bourne Again Shell (Bash). Tive a idéia de fazê-lo para por em prática o que eu tenho estudado sobre a linguagem. A melhor maneira de aprender uma nova linguagem é praticando, não tem outro jeito!

Pra quem gosta de trabalhar em linha de comando esse programinha pode ser muito útil. Pelo menos pra mim está sendo...

Ele pode ser visualizado e baixado no Pastebin AQUI.

O código é este abaixo. Porém ele fica mais legivel no Pastebin.

   1.      #!/bin/bash
   2.      # Bateria: programa de medicao de status da bateria.
   3.      # Autor: Fabio Lima CE
   4.      # Data: 25-12-2009
   5.       
   6.      # Lendo os arquivos de parametros de
   7.      # kernel para obter as informacoes
   8.      # e o status da bateria.
   9.      echo ""
  10.      cat /proc/acpi/battery/BAT1/info  \
  11.      | grep "last full capacity:"      \
  12.      | cut -c26-29                     \
  13.      > /tmp/bat-capacity              
  14.      BATCAP=$(cut -f1 -d" " /tmp/bat-capacity)
  15.      echo "    Ultimo carregamento:       $BATCAP mAh"
  16.       
  17.      cat /proc/acpi/battery/BAT1/state \
  18.      | grep "remaining capacity:"      \
  19.      | cut -c26-29                     \
  20.      > /tmp/bat-remaining
  21.      BATREM=$(cut -f1 -d" " /tmp/bat-remaining)
  22.      echo "    Capacidade atual:          $BATREM mAh"
  23.       
  24.      echo " ($BATREM * 100) / $BATCAP " | bc \
  25.      > /tmp/bat-percent
  26.      BATPER=$(cat /tmp/bat-percent)
  27.       
  28.      echo "    Percentual remanecente:    $BATPER%"
  29.       
  30.      # Simulando uma barra de progresso para
  31.      # mostrar o nivel da bateria.
  32.      # A barra de progresso tera a seguinte aparencia:
  33.      #     Nivel [||||||||||..........]
  34.       
  35.      # Variaveis do tipo string que armazenarao
  36.      # as barras e os pontos da barra de progresso.
  37.      BARRS=
  38.      DOTS=
  39.       
  40.      # Calculando a quantidade de barras
  41.      # e armazenando na variavel BARRS.
  42.      for i in $(seq -s  " " $BATPER)
  43.      do
  44.              if [ $(echo "$i % 4" | bc) -eq 0 ]
  45.              then
  46.                      BARRS=$(echo $BARRS\|)
  47.              fi
  48.      done
  49.       
  50.      # Calculando a quantidade de pontos
  51.      # e armazenando na variavel DOTS.
  52.      for j in $(seq -s " " $(echo "100 - $BATPER" | bc))
  53.      do
  54.              if [ $(echo "$j % 4" | bc) -eq 0 ]
  55.              then
  56.                      DOTS=$(echo $DOTS.)
  57.              fi
  58.      done
  59.       
  60.      # Juntando e mostrando as barras e os pontos.
  61.      # Mostrando a barra de progresso pronta.
  62.      echo ""
  63.      echo "    Nivel: [$BARRS$DOTS]"
  64.      echo ""

sábado, 23 de janeiro de 2010

Código Fonte da Vida

Queria ter o código fonte da vida
Saber em que linguagem está escrita.
Que o código fosse liberado sob a GPL;
e a obra, sob a Creative Commons.
Tudo que temos é uma documentação desatualizada
e um monte de paradigmas que TENTAM explicar as coisas.
Talvez a única alternativa seja a engenharia reversa mesmo...