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

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

Re: [shell-script] Script para rodar (ou não) outros scripts


From: Julio C. Neves
Subject: Re: [shell-script] Script para rodar (ou não) outros scripts
Date: Sun, 28 Mar 2010 17:01:11 -0300

Pois é Helton,
o mundo do SL é maravilhoso. As pessoas têm prazer em ajudar às outras e
isso nos torna unidos e informados. Devido ao desenvolvimento colaborativo,
hoje temos uma produtividade incrível e nossa lista de "o que estudar" nunca
para de crescer, ou seja, a qtd de novidades muito interessantes é sempre
maior que a nossa capacidade de estudar (pelo menos no meu caso, talvez seja
burro).

Te aconselho a entender bem o shell, pois é uma linguagem excelente que,
escrevendo pouco, produz-se muito. O zenity não é uma linguagem, mas sim uma
camada de apresentação. Talvez aí resida o seu maior problema: por não ser
linguagem, a Fundação GNOME, não lhe dá muita bola e sua documentação é
fraquíssima em inglês, em português nem pensar. Vou te dar um exemplo do que
estou falando: Procure no São Google uma forma de fazer um combobox em
zenity. Duvido que vc ache (se for material meu não vale). Descobri isso
casualmente, dando uma estudada no fonte, pois estava escrevendo uma matéria
sobre o zenity. Acho que vou até pegar esse material, juntar com outro que
já escrevi sobre o kdialog, escrever sobre o dialog (que não gosto) e
publicar outro livro, chamado "Bombando o Shell" ;).

Ahhh! Sobre a combo box? Simples:

$ zenity --entry --text "Escolha o animal mais nocivo" Gafanhoto Rato Barata
Toupeira --entry-text "George W. Bush"

OBS: A partir de amanhã, darei um curso de shell em SP (4Linux) no qual vcs
podem  se inscrever na hora. Vou dar 20% de abatimento para quem for da
lista. Mas atenção!         Este abatimento valerá somente para este
treinamento. Por favor quem for da lista e estiver no curso, se apresente.
Conheço todos de nome e quase ninguém pessoalmente.

Abraços,
Julio
Cursos de Shell e Zenity em 2 fins de semana?
- SP turma de Shell em 29/03 - ligue (11)2125-4747;
- Floripa turma Shell 12/04 http://www.seventreinamentos.com.br;
- DF turma de Shell em 17/04 - ligue (61) 3223-3000;
- Aracaju turma de Shell em 12/05 - address@hidden;
- RJ turma de Shell em 14/06 - ligue (21)2210-6061;
- Turmas fechadas em outras cidades ligue (21)  8112-9988.


Em 27 de março de 2010 16:41, Helton Moraes <address@hidden>escreveu:

>
>
> Uau, não esperava uma resposta tão densa!
>
> Como sou partidário de que cada solução exige uma mínima maturidade por
> parte do implementador, e como acho que ainda não tenho maturidade para
> tanto (fui descobrir o que é e pra que serve o Zenity há 30 segundos atrás
> na Wikipedia... Por sinal, muuito interessante... 8o), vou ARQUIVAR essa
> resposta para referência futura, já que ela provavelmente vai me alargar as
> perspectivas nos próximos estudos de Shell.
>
> Ainda ontem... (não é a música aquela) consegui uma solução parcial para
> meu
> problema, usando um script em shell e outro em octave, que por sua vez
> invocam os arquivos com as análises, todos em octave.
>
> Como tenho três categorias de diretório (uma onde estão todos os scripts,
> outras onde estão espalhados os arquivos de dados, e outra onde eu pretendo
> salvar os resultados), acabei optando por declarar, no local e no momento
> adequado de cada script, variáveis correspondentes às pastas, uma única
> vez.
> Assim, quando dentro das análises eu preciso que algo seja salvo em
> determinado local, faço uma referência à variável em questão. Dessa forma,
> quando eu quiser mudar tudo, é só mudar o caminho em um único local, que é
> onde declaro a variável.
>
> Antes disso, eu tinha feito algo do tipo:
>
> find ~/pacientes/ -mindepth 2 -type d \ # a estrutura é
> ~/pacientes/determinado_paciente/determinado_exame/arq_de.dados
> -exec ~/miotecscripts/Analise1.m '{}' \; \
> -exec ~/miotecscripts/Analise2.m '{}' \; \
> -exec ~/miotecscripts/Analise3.m '{}' \;
>
> onde eu escapava a nova linha com um \, e poderia comentar cada linha entre
> colchetes.
> Digamos que não era muito prático...
>
> Agora antes de terminar o email eu testei a tua resposta, ao menos a parte
> com o zenity, e não é que funciona mesmo! Como não sabia que existia,
> acrescentarei à lista de coisas que tenho a aprender agora (que não para de
> aumentar):
> 1)bash
> 2)sed
> 3)regexp
> 4)octave
> 5)zenity ;o)
>
> Quando chegar a hora certa, vou começar também a aumentar a biblioteca (por
> enquanto só tem o piazinho verde (expressões regulares do aurélio)).
> Devagar
> e sempre!
>
> Obrigado pelo interesse, e até breve - com novidades, espero
>
> Helton
>
> Em 26 de março de 2010 21:49, Julio C. Neves 
> <address@hidden<julio.neves%40gmail.com>
> >escreveu:
>
> > Fala Helton,
> > não sei se entendi bem, mas vc disse:
> > "ter um script com várias linhas, onde cada linha se referiria a um tipo
> de
> > análise, que eu poderia comentar para realizar só as análises que me
> > interessam".
> >
> > Minha proposta é vc montar essas análises em um arquivo, o que melhora
> sua
> > manutenção, pois não será necessário editar o script toda hora. Veja o
> > arquivo que montei:
> >
> > $ cat analises
> > analise1
> > analise2
> > analise3
> > analise4
> > analise5
> >
> > Bem criativo, né? ;)
> >
> > Agora vamos escolher as análises que vc quer fazer:
> >
> > $ Anas=$(zenity --list --checklist --text "Marque somente as análises que
> > deseja executar" --column Marque --column Analise $(cat analises | xargs
> > -n1
> > echo false))
> >
> > Escolhi as 3 opções impares e resultou:
> >
> > $ echo $Anas
> > analise1|analise3|analise5
> >
> > só que o zenity tem a opção --separator, e este separador pode ser o
> > *texto*
> > que vc quiser. Então veja a mágica:
> >
> > $ Anas=$(zenity --list --checklist --text "Marque somente as análises que
> > deseja executar" --column Marque --column Analise $(cat analises | xargs
> > -n1
> > echo false) --separator " ~/miotecscripts/")
> > $ echo $Anas
> > analise1 ~/miotecscripts/analise3 ~/miotecscripts/analise5
> >
> > Hiii! Ficou quase bom, só falta unzinho antes de todos. Então vamos
> > colocá-lo:
> >
> > $ Anas=\~/miotecscripts/$(zenity --list --checklist --text "Marque
> somente
> > as análises que deseja executar" --column Marque --column Analise $(cat
> > analises | xargs -n1 echo false) --separator " ~/miotecscripts/")
> > $ echo $Anas
> > ~/miotecscripts/analise1 ~/miotecscripts/analise3
> ~/miotecscripts/analise5
> >
> > Pronto! Está aí o que vc queria (ou pelo menos penso que é o que vc
> > queria).
> > Agora vamos voltar lá no seu find e tirar tudo a partir do -exec,
> guardando
> > a saída na variável $Dirs. Ficaria assim:
> >
> > $ Dirs=$(find ~/pacientes/ -mindepth 2 -type d)
> >
> > Suponha que $Dirs tenha recebido dir1 e dir2 (continuo bem criativo,
> viu?)
> > ;)
> >
> > Então agora é só fazer:
> >
> > $ echo $Anas | xargs -i eval {} $Dirs
> >
> > Se não entendeu ou se não for isso, podemos tentar outras coisas. O
> bacana
> > desta solução é que ela ficou com 3 linhas (zenity, find e a linha de
> > execução) e sem nenhum loop. Por isso é que desconfio qdo vejo um script
> > com
> > mais de 5 linhas... ;)
> >
> > OBS: Esta semana, a partir de 29/03, darei um curso de shell em SP
> (4Linux)
> > no qual pode se inscrever na hora. Vou dar 20% de abatimento para quem
> for
> > da lista. Mas atenção! Este abatimento valerá somente para este
> > treinamento. Por favor quem for da lista e estiver no curso, se
> apresente.
> > Conheço todos de nome e quase ninguém pessoalmente.
> >
> > Abraços,
> > Julio
> > Cursos de Shell e Zenity em 2 fins de semana?
> > - SP turma de Shell em 29/03 - ligue (11)2125-4747;
> > - Floripa turma Shell 12/04 http://www.seventreinamentos.com.br;
> > - DF turma de Shell em 17/04 - ligue (61) 3223-3000;
> > - Aracaju turma de Shell em 12/05 - 
> > address@hidden<andersonrizada%40gmail.com>
> ;
> > - RJ turma de Shell em 14/06 - ligue (21)2210-6061;
> > - Turmas fechadas em outras cidades ligue (21) 8112-9988.
> >
> >
> > Em 26 de março de 2010 00:06, heltonbiker 
> > <address@hidden<heltonbiker%40gmail.com>
> >
> > escreveu:
> >
> > >
> > >
> > > Caros Colegas
> > >
> > > Estou aprendendo ShellScript e não consegui encontrar informações para
> > > fazer o seguinte:
> > >
> > > Fiz (com ajuda) um script nomeado RunAnalyses.sh que contém o seguinte
> > > comando, por enquanto único:
> > >
> > > find ~/pacientes/ -mindepth 2 -type d -exec
> ~/miotecscripts/MapaRelevo.m
> > > '{}' 40 \;
> > >
> > > O objetivo é encontrar todas as pastas dois níveis abaixo (são elas que
> > > contêm os dados a processar) e mandá-las para um script do GNU Octave,
> > que
> > > faz a análise de alguns arquivos de cada pasta e salva em uma única
> pasta
> > de
> > > saída, designada dentro do script MapaRelevo.m
> > >
> > > Acontece que estou criando outros módulos de análise, de forma que cada
> > > arquivo do Octave (.m) faça um tipo de análise. Além disso, como são
> > > análises para testar resultados de algoritmos, quase sempre vou querer
> > rodar
> > > apenas algumas análises específicas, embora pretenda usar sempre o
> mesmo
> > > script.
> > >
> > > Imagino que eu poderia encadear vários -exec no mesmo find, mas o que
> > > resolveria melhor meu problema seria (uma dessas):
> > >
> > > 1) ter um script com várias linhas, onde cada linha se referiria a um
> > tipo
> > > de análise, que eu poderia comentar para realizar só as análises que me
> > > interessam;
> > > 2) ter um script usando variáveis repassadas pela linha de comando, de
> > > forma que eu pudesse rodar assim:
> > > $ ./RunAnalyses.sh analise1 analise2 analise3
> > > e cada análise seria na verdade um script do Octave.
> > >
> > > Além disso, dentro de cada arquivo Octave é dado um 'cd ~/saida' antes
> de
> > > salvar os resultados. Acredito que o melhor seria salvar na mesma
> pasta,
> > e
> > > depois dar um 'mv' de todos os arquivos para uma pasta de saída. Assim,
> > se
> > > eu quisesse mudar a pasta de saída seria só mudar uma linha no script
> > > RunAnalyses.sh, ao invés de mudar em cada um dos scripts Octave.
> > >
> > > Não espero receber respostas prontas, apenas alguma indicação de "boas
> > > práticas" na escolha dos comandos mais adequados e, principalmente, na
> > forma
> > > de montar a estrutura do script, de forma a favorecer a flexibilidade,
> > > principalmente.
> > >
> > > Grato pela atenção
> > >
> > > Helton Moraes
> > >
> > >
> > >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> > ------------------------------------
> >
> > ----------------------------------------------------------
> > Esta lista não admite a abordagem de outras liguagens de programação,
> como
> > perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> prévio
> > aviso.
> > ----------------------------------------------------------
> > Sair da lista: address@hidden<shell-script-unsubscribe%40yahoogrupos.com.br>
> > ----------------------------------------------------------
> > Esta lista é moderada de acordo com o previsto em
> > http://www.listas-discussao.cjb.net
> > ----------------------------------------------------------
> > Servidor Newsgroup da lista: news.gmane.org
> > Grupo: gmane.org.user-groups.programming.shell.brazil
> >
> > Links do Yahoo! Grupos
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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