Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Ataraxia
Por simon
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Jonatam Ribeiro dos Santos em (última atualização em 12/07/2012)   [ 2185 hits ]

Login: baguioloko008, 4618 pontos

Download:


Descrição

Abaixo segue o código da barra de progresso em shell script toda comentada
o arquivo upado esta com a extensão sh.txt apague a parte .txt e execute no terminal



[ Download: a.sh.txt ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

#!bin/bash
#a.sh
#Jonatam Ribeiro dos Santos
#Email jonatam.ribeiro@hotmail.começo
#website http://www.homedesenvolvimento.com
#barra de progresso usando caracteres de controle
#
#   [........................................] 0%
#   [###################.....................] 50%
#   [########################################] 100%
#

#barra vasia com cor roxa

echo -ne '{TEXTO}33[35m[.................................................]0% {TEXTO}33[m'


passo="#####"
for i in 10 20 30 40 50 60 70 80 90 100; do
sleep .1
pos=$((i/2-5))      #calcula a posição atual da barra
echo -ne '{TEXTO}33[G'   #vai para o começo da linha
echo -ne "{TEXTO}33[${pos}C"   #vai parra a posição atual da barra
echo -ne "{TEXTO}33[32m${passo}{TEXTO}33[m"   #preenche mais um passo aplicando a cor verde na barra
echo -ne '{TEXTO}33[52G'   #vai para a posição da porcetagem
echo -n "$i"      #mostra a porcetagem
done
echo



Scripts recomendados
   Script Linux recomendado Iptables Port Knocking
   Script Linux recomendado POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - APAGANDO MSG ANTIGAS EM TODAS AS PASTAS DE UM USUÁRIO
   Script Linux recomendado Firewall simples com iptables
   Script Linux recomendado Rastrear emails na internet
   Script Linux recomendado Enviar e visualizar Twitter no terminal

Comentários
[1] Comentário enviado por nickmarinho em 13/07/2012 - 08:23h:

Bom ... gostei da iniciativa, mas o código não funciona.

Além de a primeira linha estar errada, seria: #!/bin/bash no lugar de #!bin/bash

Não rolou.


[2] Comentário enviado por baguioloko008 em 13/07/2012 - 08:59h:

é porque na hora que eu colei o escript e salvei em txt ele mudo as linhas onde tem os comandos para colorir:
essa: "echo -ne '{TEXTO}33[G' "
OBS retire o * que estiver no script, coloquei para não mudar o formato do texto, apenas retire o *
no casso seria essa: "echo -ne '/*033[G' "

aqui vai o escript coreto

#!/bin/bash
#a.sh
#Jonatam Ribeiro dos Santos
#Email jonatam.ribeiro@hotmail.começo
#website http://www.homedesenvolvimento.com
#barra de progresso usando caracteres de controle
#
# [........................................] 0%
# [###################.....................] 50%
# [########################################] 100%
#

#barra vasia com cor roxa

echo -ne '\*033[35m[.................................................]0% \*033[m'


passo="#####"
for i in 10 20 30 40 50 60 70 80 90 100; do
sleep .1
pos=$((i/2-5)) #calcula a posição atual da barra
echo -ne '\*033[G' #vai para o começo da linha
echo -ne "\*033[${pos}C" #vai parra a posição atual da barra
echo -ne "\*033[32m${passo}\*033[m" #preenche mais um passo aplicando a cor verde na barra
echo -ne '\*033[52G' #vai para a posição da porcetagem
echo -n "$i" #mostra a porcetagem
done
echo

OBS: RETIRES OS * DO ESCRIPT, TIVE QUE COLOCAR PARA BLOQUEAR O ERRO QUE ACONTECE COMO NO POST ACIMA, TIRANDO OS * E EXECUTE.


[3] Comentário enviado por tarcius em 27/07/2012 - 11:17h:

Achei muito interessante, mas não estou conseguindo adaptar para o meu caso.
Tenho uma rotina escrita em fortran e quero que essa rotina retorne a variável i , mas não sei como fazer a comunicação entre a saída fortran com a entrada shell.

Alguma opnição?


[4] Comentário enviado por baguioloko008 em 27/07/2012 - 15:19h:

Não programo em fortram mas vc pode tentar exibir a mensagem na tela, e usar o comando read para ler oque o fortran exibiu no shell, e assim pegar o valor da variavel "i" e manipulala no shell

aki vai um exemplo de como usar o o comando read
http://patinhofaminto.awardspace.com/vertutorial.php?id=7

dei uma pesquisada e pelo que vi o fortran imprime com o comando print*,variavel ou algo parecido, então no casso vc imprimiria a variavel na tela como ultimo processo a ser executado pelo programa, depois vc teria que executar o script em shell com o comando read varial para ler o o valor de "i" e salvar em variavel.

sendo assim vc poderia fazer o seguinte para rodar os 2 arquvios usar o "|"

SERVER@ROOT#> ./script_fortran.f | ./script_shell.sh

assim o shell executaria seu escript fortran que ira imprimir a variavel "i" e executaria posteriormente o script_shell com o primeiro comando do script sendo o read variavel salvando os dados de "i" na variavel "variavel", sendo assim vc poderia usar a barra de progresso.
vamos a um exemplo mais complexo

eu vou usar 3 arquivos

arquivo 1(programa em fortran ja compilado) = programa

program principal
implici none

print *,"1000"
end program


arquivo 2(script que pega o 1000 ou qualquer variavel da tela)= script.sh
#!/bin/bash
#script.sh
#Jonatam Ribeiro dos Santos
#Email jonatam.ribeiro@hotmail.começo
#website http://www.homedesenvolvimento.com
#le dados imprimidos pelo programa em fortran
read a

echo "esta e o resultado pego pelo shell do programa em fortran = $a"

#aki vc pode usar a barra de progresso

arquivo 3(arquivo com o comando de execucao para que nao tenha que digitar comandos para executar os dois scripts)= principal.sh
#!/bin/bash
#principal.sh
#Jonatam Ribeiro dos Santos
#Email jonatam.ribeiro@hotmail.começo
#website http://www.homedesenvolvimento.com
#executa o programa em fortran e logo apos o script.sh

./programa | ./script.sh


com esses arquivos criados vc executa no terminal apenas
>./principal.sh

lembresse de dar permicao de execucao com o chmod


[5] Comentário enviado por tarcius em 27/07/2012 - 17:35h:

Obrigado pelas dicas, tinha feito algo parecido com o 'arquivo 2' mas não tinha funcionado.

Mas o que resolveu meu problema foi a dica um, utilizando o pipe... veja como ficou o script

#!/bin/bash
echo -ne '\*033[35m[.................................................]0% \*033[m'
passo="#####"


./programa | while read i

do

pos=$((i/2-5)) #calcula a posição atual da barra
echo -ne '\*033[G' #vai para o começo da linha
echo -ne "\*033[${pos}C" #vai parra a posição atual da barra
echo -ne "\*033[32m${passo}\*033[m" #preenche mais um passo aplicando a cor verde na barra
echo -ne '\*033[52G' #vai para a posição da porcetagem
echo -n "$i" #mostra a porcetagem
done
echo



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.