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: Thiago Diniz da Silveira
Subject: Re: [shell-script] Script para rodar (ou não) outros scripts
Date: Mon, 29 Mar 2010 08:15:48 -0300

Eu consegui achar 2 sites bom sobre zenity quando eu estava fazendo aquele
meu programa.

No momento estou no serviço e não sei eles de cabeça, mas assim que eu
chegar em casa (depois das 22 horas),
eu mando os links para a lista.

Me ajudou bastante.

Abraço

Em 28 de março de 2010 17:01, Julio C. Neves <address@hidden>escreveu:

> 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]
>
>
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> 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
> ---------------------------------------------------------------------
> 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]



reply via email to

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