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

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

Re: [shell-script] Re: Enviar músicas para o MP4.


From: Rodrigo Boechat
Subject: Re: [shell-script] Re: Enviar músicas para o MP4.
Date: Mon, 06 Feb 2012 10:08:24 -0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:9.0) Gecko/20111224 Thunderbird/9.0.1

Caraca!!!
Eu vou ter que fazer isso para minha coleção inteira?! T_T

Bom. Fiz testes com as mesmas músicas que eu usei antes.

Criei um script simples para testar a parte em questão:
================================================
#!/bin/bash
while read nome; do
echo "- - - - -"
echo "$nome"
done <<< $(echo "$@" | sed -n "/mp3/s- /-\n/-gpi")
================================================


O resultado foi esse:
================================================
- - - - -
.../Dream Theater - A Dramatic Turn Of Events [mp3-vbr-2011]/01 - On The 
Backs Of Angels [limpo].mp3 .../Dream Theater - A Dramatic Turn Of 
Events [mp3-vbr-2011]/02 - Build Me Up, Break Me Down [limpo].mp3
================================================

Infelizmente ocorreu o mesmo erro.
O correto seria ter uma linha de sequência de "menos" entre cada linha 
de mp3.
:(

Em 06-02-2012 09:24, Julio C. Neves escreveu:
> Exatamente isso, e é por isso que nada funcionava. O seu arquivo está
> coalhado de caracteres de controle. Primeiramente vamos limpá-lo e
> posteriormente executar aquele cmd (que não me lembro mais), mas que te
> mandei em msg anterior.
>
> Para limpá-lo, faça:
> tr [:cntrl:] ~<  arquivo_sujo | tr -s ~>  arquivo_limpo
>
> Agora, é provável que qdo vc der um cat -vet arquivo_limpo, apareçam
> somente as linhas com dado, terminando com um cifrão ($).
>
> Se for isso que acontecer, aplique o cmd que já tinha passado na msg
> anterior e corra para o abraço. ;)
>
> Abcs,
> Julio
> *Já foi lançado "Bombando o
> Shell<http://www.brasport.com.br/index.php?dispatch=products.view&product_id=666>
> ". *
> *Show **de interfaces gráficas sob Shell!*
> *
> *
>
>
>
> Em 4 de fevereiro de 2012 23:21, Rodrigo Boechat<
> address@hidden>  escreveu:
>
>> **
>>
>>
>> Eu testei mandando três arquivos.
>> Segue a resposta do comando para cada um:
>>
>> ID3^D^@^@^@^@q$TALB^@^@^@^Z^@^@^CA Dramatic Turn Of
>> EventsTPE1^@^@^@^N^@^@^CDream TheaterTIT2^@^@^@^[^@^@^CBuild Me Up,
>> Break Me DownTRCK^@^@^@^C^@^@^C02TCON^@^@^@^S^@^@^CRock /
>> AlternativeTPUB^@^@^@^S^@^@^@Roadrunner
>> RecordsTDRC^@^@^@^E^@^@^C2011APIC^@^@V^A^@^@^Cimage/jpeg^@^Cn^@M-^?M-XM-^?M-`^@^PJFIF^@^A^A^@^@^A^@^A^@^@M-^?M-~^@;CREATOR:
>>
>> gd-jpeg v1.0 (using IJG JPEG v62), quality = 90$
>> M-^?M-[^@C^@^C^B^B^C^B^B^C^C^C^C^D^C^C^D^E^H^E^E^D^D^E$
>> ^G^G^F^H^L$
>> ^L^L^K$
>>
>> ^K^K^M^N^R^P^M^N^Q^N^K^K^P^V^P^Q^S^T^U^U^U^L^O^W^X^V^T^X^R^T^U^TM-^?M-[^@C^A^C^D^D^E^D^E^I^E^E^I^T^M^K^M^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^TM-^?M-@
>> ^@^Q^H^@M-z^@M-y^C^A"^@^B^Q^A^C^Q^AM-^?M-D^@^_^@^@^A^E^A^A^A^A^A^A^@^@^@^@^@^@^@^@^A^B^C^D^E^F^G^H^I$
>>
>> - - - -
>>
>> ID3^D^@^@^@^@q^TTALB^@^@^@^Z^@^@^CA Dramatic Turn Of
>> EventsTPE1^@^@^@^N^@^@^CDream TheaterTIT2^@^@^@^S^@^@^CLost Not
>> ForgottenTRCK^@^@^@^C^@^@^C03TCON^@^@^@^S^@^@^CRock /
>> AlternativeTPUB^@^@^@^S^@^@^@Roadrunner
>> RecordsTDRC^@^@^@^E^@^@^C2011APIC^@^@V^A^@^@^Cimage/jpeg^@^Cn^@M-^?M-XM-^?M-`^@^PJFIF^@^A^A^@^@^A^@^A^@^@M-^?M-~^@;CREATOR:
>>
>> gd-jpeg v1.0 (using IJG JPEG v62), quality = 90$
>> M-^?M-[^@C^@^C^B^B^C^B^B^C^C^C^C^D^C^C^D^E^H^E^E^D^D^E$
>> ^G^G^F^H^L$
>> ^L^L^K$
>>
>> ^K^K^M^N^R^P^M^N^Q^N^K^K^P^V^P^Q^S^T^U^U^U^L^O^W^X^V^T^X^R^T^U^TM-^?M-[^@C^A^C^D^D^E^D^E^I^E^E^I^T^M^K^M^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^TM-^?M-@
>> ^@^Q^H^@M-z^@M-y^C^A"^@^B^Q^A^C^Q^AM-^?M-D^@^_^@^@^A^E^A^A^A^A^A^A^@^@^@^@^@^@^@^@^A^B^C^D^E^F^G^H^I$
>>
>> - - - -
>>
>> ID3^D^@^@^@^@q^\TALB^@^@^@^Z^@^@^CA Dramatic Turn Of
>> EventsTPE1^@^@^@^N^@^@^CDream TheaterTIT2^@^@^@^W^@^@^COn The Backs Of
>> AngelsTRCK^@^@^@^C^@^@^C01TCON^@^@^@^S^@^@^CRock /
>> AlternativeTPUB^@^@^@^S^@^@^@Roadrunner
>> RecordsTDRC^@^@^@^E^@^@^C2011APIC^@^@V^A^@^@^Cimage/jpeg^@^Cn^@M-^?M-XM-^?M-`^@^PJFIF^@^A^A^@^@^A^@^A^@^@M-^?M-~^@;CREATOR:
>>
>> gd-jpeg v1.0 (using IJG JPEG v62), quality = 90$
>> M-^?M-[^@C^@^C^B^B^C^B^B^C^C^C^C^D^C^C^D^E^H^E^E^D^D^E$
>> ^G^G^F^H^L$
>> ^L^L^K$
>>
>> ^K^K^M^N^R^P^M^N^Q^N^K^K^P^V^P^Q^S^T^U^U^U^L^O^W^X^V^T^X^R^T^U^TM-^?M-[^@C^A^C^D^D^E^D^E^I^E^E^I^T^M^K^M^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^T^TM-^?M-@
>> ^@^Q^H^@M-z^@M-y^C^A"^@^B^Q^A^C^Q^AM-^?M-D^@^_^@^@^A^E^A^A^A^A^A^A^@^@^@^@^@^@^@^@^A^B^C^D^E^F^G^H^I$
>>
>> - - - -
>>
>> Era isso que você precisava?
>>
>> Em 04-02-2012 22:59, Julio C. Neves escreveu:
>>> Rodrigo,
>>> faz o seguinte: cá um cat -vet /arquivo/que/vc/está/usando | head -5 e
>>> posta na lista. Qdo estiver funcionando, explico.
>>>
>>> Abcs,
>>> Julio
>>> *Já foi lançado "Bombando o
>>> Shell<
>> http://www.brasport.com.br/index.php?dispatch=products.view&product_id=666
>>> ". *
>>> *Show **de interfaces gráficas sob Shell!*
>>> *
>>> *
>>>
>>>
>>>
>>> Em 4 de fevereiro de 2012 22:37, Rodrigo Boechat<
>>> address@hidden>  escreveu:
>>>
>>>> **
>>>>
>>>>
>>>> Julio,
>>>> Obrigado pela resposta.
>>>> Substitui a linha pal sugeria por você, mas novamente só funcionou com a
>>>> lista previamente criada em um arquivo de texto.
>>>> Executando num subshell e jogando a resposta para o while caiu no mesmo
>>>> erro; tudo na mesma linha.
>>>> Por enquanto eu vou ficar com a lista mesmo. Já que ainda não encontrei
>>>> solução para o caso.
>>>>
>>>> Bem. Poderia me explicar essa expressão que você usou no sed?
>>>> Tentei entendê-la mas viajei. haha
>>>> :)
>>>>
>>>> Em 03-02-2012 14:16, Julio C. Neves escreveu:
>>>>> Rodrigo,
>>>>> experimente substituir o sed pelo da linha abaixo:
>>>>>
>>>>> echo "$@" | sed -n "/mp3/s- /-\n/-gpi"
>>>>>
>>>>> Substituindo a barra (/) usada como separador por outro caractere (no
>>>> caso
>>>>> -), fica mais fácil ver.
>>>>>
>>>>> Por outro lado, o grep é desnecessário, já que pode-se conseguir o
>> mesmo
>>>>> efeito com o sed.
>>>>>
>>>>> Abcs,
>>>>> Julio
>>>>> *Já foi lançado "Bombando o Shell".
>>>>> Show de interfaces gráficas sob Shell!*
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Em 2 de fevereiro de 2012 22:11, Rodrigo Boechat<
>>>>> address@hidden>  escreveu:
>>>>>> Olá, boa noite.
>>>>>>
>>>>>> Alguém poderia me ajudar?
>>>>>> Quando configurei essa nova versão no Thunar, percebi que havia erro
>> na
>>>>>> linha 76 do script:
>>>>>> http://pastebin.com/DLKipbzv
>>>>>>
>>>>>> done<<<  $(echo "$*" | sed -e "s/ \//\n\//g" | grep ".mp3")
>>>>>>
>>>>>> Essa linha está mandando para a variável mp3 [linha 40] toda a lista
>> de
>>>>>> arquivos em uma linha apenas.
>>>>>> Quando aideia é separar os caminhos dos arquivos em linhas para o
>> while
>>>>>> trabalhar.
>>>>>>
>>>>>> Estranho é que, criando um arquivo com a lista, usando a mesma linha:
>>>>>> echo "$*" | sed -e "s/ \//\n\//g" | grep ".mp3">  listaDeTeste
>>>>>>
>>>>>> E jogando para o while o arquivo:
>>>>>> done<  listaDeTeste
>>>>>>
>>>>>> Funciona tudo corretamente.
>>>>>>
>>>>>> Não consegui entender porque o erro acontece.
>>>>>> Tentei mas não consegui solucionar o erro.
>>>>>>
>>>>>> Grato!
>>>>>>
>>>>>> Em 24-01-2012 14:30, Rodrigo Boechat escreveu:
>>>>>>> Fernando,
>>>>>>> Bom dia.
>>>>>>>
>>>>>>> Obrigado pela sua colaboração.
>>>>>>> Suas observações foram interessantes e me ajudou muito a mudar meu
>>>>>>> pensamento.
>>>>>>> Como iniciante no shellscript eu realmente não teria como adquirir o
>>>>>>> conhecimento de toda a sintaxe da linguagem.
>>>>>>>
>>>>>>> Valeu muito suas dicas. Pensarei diferente de agora em diante. :)
>>>>>>>
>>>>>>> Segue a nova versão: http://pastebin.com/DLKipbzv
>>>>>>>
>>>>>>> Notei que a versão anterior tinha um erro feio na minha lógica, tinha
>>>>>>> um "w" perdidão no meio do código que estava gerando outro erro
>> [linha
>>>>>>> 58 da versão anterior] e tive problemas com o ls [linha 56, versão
>>>>>>> anterior].
>>>>>>> Acho que consegui resolver tudo. :)
>>>>>>>
>>>>>>> E só explicando. Minhas férias acabaram. Por isso demorei a
>> responder.
>>>>>>> Abaixo eu coloquei uns comentários sobre o que você escreveu.
>>>>>>>
>>>>>>>
>>>>>>> Em 29-11-2011 16:07, Fernando Mercês escreveu:
>>>>>>>> Salve, Rodrigo, tudo bem?
>>>>>>>>
>>>>>>>> Vou dar uns pitacos:
>>>>>>>>
>>>>>>>> 1. Quando você repete muito código, é a hora de usar funções. Uma
>> boa
>>>>>>>> aí seria definir, no início do script, uma função de erro, por
>>>>>>>> exemplo:
>>>>>>>>
>>>>>>>> err() {
>>>>>>>> zenity --info --title "Erro!" --text "$1"
>>>>>>>> exit 1
>>>>>>>> }
>>>>>>>>
>>>>>>>> Aí na hora de informar erro, basta fazer:
>>>>>>>>
>>>>>>>> err "mensagem do erro"
>>>>>>>>
>>>>>>>> 2. Colocar todo o seu programa dentro de um bloco de if ou else não
>> é
>>>>>>>> muito prático. Ao invés de fazer:
>>>>>>>> ---
>>>>>>>> if [ ! -n "$1" ]; then
>>>>>>>> #erro
>>>>>>>> else
>>>>>>>> # todo seu programa
>>>>>>>> fi
>>>>>>>> ---
>>>>>>>> Prefira:
>>>>>>>> ---
>>>>>>>> if [ ! -n "$1" ]; then
>>>>>>>> #erro
>>>>>>>> exit 1
>>>>>>>> fi
>>>>>>>>
>>>>>>>> #todo seu programa
>>>>>>>> ---
>>>>>>>>
>>>>>>>> Ou melhor, já usando a sugestão da função err():
>>>>>>>>
>>>>>>>> ---
>>>>>>>> test -f "$1" || err "Falta arquivo de entrada ou não existe..."
>>>>>>>>
>>>>>>>> # todo o seu programa.
>>>>>>>> --
>>>>>>>>
>>>>>>>> Como a função err() tem um exit, ao ser chamada, o script será
>>>>>>>> encerrado. Perceba também que usei a opção -f do teste já neste
>> teste
>>>>>>>> do argumento, então você não precisaria testar novamente como faz na
>>>>>>>> linha 14. ;)
>>>>>>>>
>>>>>>> A linha 14 testa outro arquivo que não é o mesmo do argumento de
>>>>> entrada.
>>>>>>> É um arquivo que "guarda" o ultimo device usado pelo MP4.
>>>>>>> Foi uma tentativa de tentar evitar que a cada execução o script
>>>>>>> procurasse o aparelho novamente; assim ganharia performance. No
>>>>>>> entanto, esbarrei em um erro. De curiosidade fui inserindo e
>> removendo
>>>>>>> pendrives junto com o MP4 até que um pendrive pegasse o mesmo
>>>>>>> dispositivo já usado anteriormente pelo MP4. Aí os arquivos foram
>>>>>>> copiado no pendrive, não para o MP4.
>>>>>>> Pela minha lógica, eu sabia que isso poderia acontecer. só forcei a
>>>>>>> situação para obter a comprovação.
>>>>>>>
>>>>>>> Por esse motivo removi essa parte e voltei a fazer com que o script
>>>>>>> procure, em cada execução, o ponto de montagem do MP4.
>>>>>>>
>>>>>>>> 3. Você checa se o arquivo foi passado na linha de comando, mas
>> dentro
>>>>>>>> do script você fixou o arquivo (linha 12), é isso mesmo? Se sua
>> ideia
>>>>>>>> era fazer uma lógica do tipo "se o usuário informar um arquivo, usa,
>>>>>>>> do contrário, usa o padrão
>>>>>>>> /home/$USER/.enviarParaMP4-pontoDeMontagem", melhor fazer assim:
>>>>>>>>
>>>>>>>> arquivo="$HOME/.enviarParaMP4-pontoDeMontagem"
>>>>>>>> test -f "$1"&&  arquivo=$1 || echo "Aviso: usando arquivo padrão
>>>>>>>> $arquivo"
>>>>>>>>
>>>>>>>> O que vem depois do&&  só é executado se o test retornar sucesso. O
>>>>>>>> que vem depois do || só é executado se o test falhar.
>>>>>>>>
>>>>>>>> Acho que se você pensar nestes três itens e aplicar em todo o
>> código,
>>>>>>>> terá um script muito menor. ;)
>>>>>>>>
>>>>>>> Bom, justamente a explicação anterior fala sobre o arquivo
>>>>>>> ".enviarParaMP4-pontoDeMontagem".
>>>>>>> O caso da linha 14.
>>>>>>>
>>>>>>> Eu queria evitar a execução de parte do código se o MP4 já estivesse
>>>>>>> montado. Mas como disse houve o erro já explicado.
>>>>>>> Até agora eu não consegui enxergar uma maneira de fazer isso,
>> evitando
>>>>>>> o possível problema, pois para evitar o problema o eu teria que fazer
>>>>>>> toda a checagem novamente. O que tornaria o código redundante.
>>>>>>> Para que eu evitar de executar um código, sendo que para evitar erros
>>>>>>> eu tenho que executá-lo? ^_^"
>>>>>>>
>>>>>>> Opa, me ocorreu uma ideia. Acho que posso verificar o serial direto
>>>>>>> pelo ponto de montagem. Se for possível até valeria a pena executar
>>>>>>> uma linha para verificar se o ponto de montagem se refere ao mesmo
>>>>>>> serial contido na variável "$dispositivoSerial".
>>>>>>>
>>>>>>> *** É pesquisei um bocado. Não consegui encontrar nada que pudesse
>>>>>>> fazer isso sem fazer os passos já feitos para conseguir o ponto de
>>>>>>> montagem. Se alguém souber como se faz e puder contribuir, agradeço.
>>>>>>> :)
>>>>>>>
>>>>>>>> Grande abraço e boa sorte!
>>>>>>>>
>>>>>>> Obrigado. O script final realmente ficou muito menor e mais limpo.
>>>>>>> Gostei do resultado.
>>>>>>>
>>>>>>> Quem tiver o Thunar ou a paciência de executá-lo na linha de comando,
>>>>>>> por favor me retornem os resultados. Até agora não encontrei erros.
>>>>>>>
>>>>>>> Obrigado lista pelas ajudas!
>>>>>>> E se tiverem mais ideias para melhorar o script ou incrementar, me
>>>>> avisem!
>>>>>>> Rodrigo Boechat
>>>>>>>> Att,
>>>>>>>>
>>>>>>>> Fernando Mercês
>>>>>>>> Linux Registered User #432779
>>>>>>>> www.mentebinaria.com.br
>>>>>>>> softwarelivre-rj.org
>>>>>>>> @MenteBinaria
>>>>>>>> ------------------------------------
>>>>>>>> Participe do I Hack'n Rio
>>>>>>>> hacknrio.org
>>>>>>>> ------------------------------------
>>>>>>>>
>>>>>>>> 2011/11/26 Rodrigo Boechat<address@hidden
>>>>>>>> <mailto:rodrigo.boechat.tenorio%40gmail.com>>
>>>>>>>>> Acho que finalizei o script.
>>>>>>>>> A nova nova nova versão está no pasteBin:
>>>>>>>>> http://pastebin.com/XMYX6bAR
>>>>>>>>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>>>>> - -
>>>>>>>>> - - - -
>>>>>>>>>
>>>>>>>>> MrBits,
>>>>>>>>> Implementei a contagem de arquivos.
>>>>>>>>> Creio estar funcionando corretamente. hehe
>>>>>>>>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>>>>>>>> - - - -
>>>>>>>>> Alysson,
>>>>>>>>> Alterei conforme sua observação.
>>>>>>>>> Obrigado.
>>>>>>>>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>>>>>>>> - - - -
>>>>>>>>> Pessoal,
>>>>>>>>>
>>>>>>>>> Enquanto eu estava fuçando no script esbarrei com uma curiosidade.
>>>>>>>>> Fiz o exemplo a baixo para demonstrar o que me aconteceu [Coloquei
>>>>>>>>> "underscore" no lugar de espaços dentro do echo por causa do
>>>>>>>> formato html]:
>>>>>>>>> echo "campo/1_campo/2__campo/3___campo/4____campo/5" | sed -e
>>>>>>>>> "s/\([a-z0-9/]* *\)\{4\}[0-9a-zA-Z/ ]*/\1\##/"
>>>>>>>>>
>>>>>>>>> Sem querer, esse comando de SED que eu fiz, retornou exatamente:
>>>>>>>>> "campo/4____"
>>>>>>>>> !!!!!!
>>>>>>>>> Depois foi só adicionar na linha de sed o "; s/ *//g" e obtive:
>>>>>>>>> "campo/4"
>>>>>>>>>
>>>>>>>>> O interessante é que eu esperava que o retorno fosse o seguinte:
>>>>>>>>> "campo/1_campo/2__campo/3___campo/4____"
>>>>>>>>>
>>>>>>>>> Já que eu tive esse retorno inesperado da regex aproveitei e
>>>>> substituí
>>>>>>>>> uns AWK's, deixando umas linhas menores.
>>>>>>>>> Mas o fato é que eu fiquei sem entender o porque disso ter
>>>>> acontecido.
>>>>>>>>> Alguém consegue compreender o porque? Como eu faria para obter o
>>>>>>>> retorno
>>>>>>>>> esperado?
>>>>>>>>> Já bati um bocado de cabeça e não cheguei na solução. Agora está
>> mais
>>>>>>>>> como curiosidade que como necessidade, mesmo.
>>>>>>>>>
>>>>>>>>> Obrigado por toda a ajuda.
>>>>>>>>> :)
>>>>>>>>>
>>>>>>>>> <http://pastebin.com/XMYX6bAR>
>>>>>>>>>
>>>>>>>>> Em 17-11-2011 09:22, Alysson Gonçalves de Azevedo escreveu:
>>>>>>>>>
>>>>>>>>>> Vi que dentro do while, vc ta rodando o df a todo momento...
>>>>>>>>>> Eu sei que o df é rapinho... mas só por sugestão... não seria
>>>>>>>> melhor pegar
>>>>>>>>>> o tamanho do dispositivo apenas 1 vez e depois subtrair do espaço
>>>>>>>> livre o
>>>>>>>>>> tamanho de cada musica?
>>>>>>>>>>
>>>>>>>>>> Saudações...
>>>>>>>>>>
>>>>>>>>>> Alysson Gonçalves de Azevedo
>>>>>>>>>> (11) 8491-7730
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Em 17 de novembro de 2011 03:25, Rodrigo Boechat<
>>>>>>>>>> address@hidden
>>>>>>>> <mailto:rodrigo.boechat.tenorio%40gmail.com>>  escreveu:
>>>>>>>>>>> **
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Realmente interessante.
>>>>>>>>>>> Eu mesmo pensei em perguntar, mas o Tiago foi o fez na minha
>>>>> frente.
>>>>>>>>>>> :)
>>>>>>>>>>>
>>>>>>>>>>> Bem aqui segue a nova versão da bagaça:
>>>>>>>>>>> http://pastebin.com/XMYX6bAR
>>>>>>>>>>> Se alguém enxergar como melhorar qualquer coisa, me avisa!
>>>>>>>>>>>
>>>>>>>>>>> Tiago,
>>>>>>>>>>> Tentei implementar o esquema da verificação do tamanho do
>> arquivo.
>>>>>>>>>>> Acredito estar funcionando. Mas ainda carece de testes.
>>>>>>>>>>>
>>>>>>>>>>> Como eu optei por verificar o tamanho do arquivo para reservar
>>>>>>>> os 100KB,
>>>>>>>>>>> pros arquivos de configurações do aparelho, não mexi com o
>>>>>>>> tratamento de
>>>>>>>>>>> erro sobre o cp.
>>>>>>>>>>>
>>>>>>>>>>> Ainda estou vendo uma maneira de limitar a quantidade de arquivos
>>>>> no
>>>>>>>>>>> diretório para 999, que é o que o aparelho suporta.
>>>>>>>>>>> Logo mando novas a respeito disso. Talvez um:
>>>>>>>>>>> ls | grep ".mp3" | wc -l
>>>>>>>>>>> resolva meu caso. Eu que não tive tempo de implementar ainda.
>>>>>>>>>>> - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
>>>>>>>>>>>
>>>>>>>>>>> MrBits,
>>>>>>>>>>> Obrigado pela ajuda e pela dica do /proc...
>>>>>>>>>>> Também pelo sed -e 's/^.*\[//g ; s/\].*$//g'
>>>>>>>>>>> Essa abordagem de separar o que eu realmente precisava ficou
>>>>>>>> muito mais
>>>>>>>>>>> fácil e conveniente que meu:
>>>>>>>>>>>
>>>>>>>>>>> sed -e "s/^.\{28\}\([a-z]\{3\}\).*/\1/"
>>>>>>>>>>>
>>>>>>>>>>> E não consegui evitar os subshells, infelizmente.
>>>>>>>>>>> Quebrei cabeça, pesquisei e descobri que, para os processos
>>>>>>>> necessários
>>>>>>>>>>> envolvidos, não há escapatória.
>>>>>>>>>>> Ou eu esqueci de alguma coisa?
>>>>>>>>>>> - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
>>>>>>>>>>>
>>>>>>>>>>> Julio,
>>>>>>>>>>> Obrigado pelas dicas. Também suas explicações foram
>>>>> esclarecedoras.
>>>>>>>>>>> - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
>>>>>>>>>>>
>>>>>>>>>>> Abraço a todos!
>>>>>>>>>>> Rodrigo Boechat
>>>>>>>>>>>
>>>>>>>>>>> Em 16-11-2011 14:53, Julio C. Neves escreveu:
>>>>>>>>>>>
>>>>>>>>>>>> Fala Pacman,
>>>>>>>>>>>> isso vem desde a época do UNIX. Suponha que vc faça um find
>>>>> assim:
>>>>>>>>>>>> find . -name arq\? -exec grep -l palavra {} \;
>>>>>>>>>>>>
>>>>>>>>>>>> e supondo que esse find encontrasse arq1, arq2 e arq3, a linha
>>>>>>>> montada
>>>>>>>>>>> pelo
>>>>>>>>>>>> exec para execução seria:
>>>>>>>>>>>> rm arq1 ; rm arq2 ; rm arq3
>>>>>>>>>>>>
>>>>>>>>>>>> Usando \+, esta linha ficaria:
>>>>>>>>>>>> rm arq1 arq2 rm arq3
>>>>>>>>>>>>
>>>>>>>>>>>> Daí ser muito mais rápido.
>>>>>>>>>>>> Abcs,
>>>>>>>>>>>> Julio
>>>>>>>>>>>> *Quer aprender tudo de Shell em 2 fins de semana?*
>>>>>>>>>>>> * address@hidden
>>>>>>>> <mailto:julio.neves%40gmail.com><address@hidden
>>>>>>>> <mailto:julio.neves%40gmail.com>>  ou (21) 8112-9988*
>>>>>>>>>>>> **
>>>>>>>>>>>> *** » **julioneves1 » juliobash*
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Em 16 de novembro de 2011 13:58, Tiago Peczenyj
>>>>>>>>>>>> <address@hidden
>>>>>>>> <mailto:tiago.peczenyj%40gmail.com>>escreveu:
>>>>>>>>>>>>> **
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> puxa julio eu nao conhecia o \+
>>>>>>>>>>>>>
>>>>>>>>>>>>> vi rapidamente no man find, por acaso o seu livro aborda esta
>>>>>>>>>>>>> construção? confesso que para mim é novidade.
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2011/11/16 Julio C. Neves<address@hidden
>>>>>>>> <mailto:julio.neves%40gmail.com>>:
>>>>>>>>>>>>>> Só para otimizar I/O. Use o mesmo conceito no resto. Troque
>>>>>>>> as linhas:
>>>>>>>>>>>>>> find "/proc/scsi/usb-storage/" -type f -exec grep -l
>>>>>>>>>>>>>> "$dispositivoSerial" {} \; | awk -F '/' '{print "sd "$5}' |
>>>>>>>> tail -n1>
>>>>>>>>>>>>>> $dispositivoArquivo
>>>>>>>>>>>>>> read dispositivo<  $dispositivoArquivo
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> por:
>>>>>>>>>>>>>> read dispositivo<<<  $(find /proc/scsi/usb-storage/ -type f
>>>>>>>> -exec grep
>>>>>>>>>>>>>> -l "$dispositivoSerial"
>>>>>>>>>>>>>> {} \+ | awk -F '/' '{print "sd "$5}' | tail -n1)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Será gerado um subshell para executar o find, mas será mais
>>>>>>>> rápido por
>>>>>>>>>>>>> não
>>>>>>>>>>>>>> fazer I/O. Repare tb que troquei o \; do exec por \+ para ser
>>>>>>>> mais
>>>>>>>>>>>>> rápido.
>>>>>>>>>>>>>> Abcs,
>>>>>>>>>>>>>> Julio
>>>>>>>>>>>>>> *Quer aprender tudo de Shell em 2 fins de semana?*
>>>>>>>>>>>>>> * address@hidden
>>>>>>>> <mailto:julio.neves%40gmail.com><address@hidden
>>>>>>>> <mailto:julio.neves%40gmail.com>>  ou (21) 8112-9988*
>>>>>>>>>>>>>> **
>>>>>>>>>>>>>> *** » **julioneves1 » juliobash*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Em 15 de novembro de 2011 19:05, Rodrigo Boechat<
>>>>>>>>>>>>>> address@hidden
>>>>>>>> <mailto:rodrigo.boechat.tenorio%40gmail.com>>  escreveu:
>>>>>>>>>>>>>>> **
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Tiago,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> A sua ideia de abordagem para a questão do espaço foi
>>>>>>>> interessante.
>>>>>>>>>>>>>>> Realmente esqueci que existe a saída de erro... T_T"
>>>>>>>>>>>>>>> O fato é que nunca mexi com isso. Vou pesquisar.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Também suas observações foram bem feitas. O meu MP4
>>>>>>>> shing-ling suporta
>>>>>>>>>>>>>>> 999 MPtrêzes.
>>>>>>>>>>>>>>> Ok. Eu perguntaria como eu colocaria 999 músicas de
>>>>>>>> qualidade "padrão"
>>>>>>>>>>>>>>> num espaço de 2GB... mas isso não vem ao caso.
>>>>>>>>>>>>>>> Hehehe
>>>>>>>>>>>>>>> E, novamente, sim. Estive olhando o MP4. Ele salva suas
>>>>>>>> configurações
>>>>>>>>>>> de
>>>>>>>>>>>>>>> maneira confusa em vários arquivinhos de texto.
>>>>>>>>>>>>>>> Então seria interessante reservar uns 100KB para o próprio
>>>>>>>> aparelho.
>>>>>>>>>>>>>>> Estudarei como implementar suas ideias em breve.
>>>>>>>>>>>>>>> Por enquanto, obrigado. Assim que eu tiver alguma novidade a
>>>>>>>> esse
>>>>>>>>>>>>>>> respeito eu mostro || echo "Ou mando dúvidas".
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ----------------------------------------
>>>>>>>>>>>>>>> MrBits,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Rapaz, eu fis muita pesquisa para saber como encontrar o
>>>>>>>> raio do ponto
>>>>>>>>>>>>>>> de montagem.
>>>>>>>>>>>>>>> Nunca eu ia imaginar que esse caminho do proc/scsi pudesse
>>>>>>>> existir. :)
>>>>>>>>>>>>>>> Porque em todas as explicações que eu achei, nada falou a
>>>>>>>> respeito.
>>>>>>>>>>>>>>> Bom. Da forma abaixo, consegui fazer o processo sem usar
>>>>>>>> subshell.
>>>>>>>>>>>>>>> Em contra partida, criou-se um tráfego maior de IO.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> dispositivoArquivo="/home/$USER/.enviarParaMP4-dispositivo"
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> find "/proc/scsi/usb-storage/" -type f -exec grep -l
>>>>>>>>>>>>>>> "$dispositivoSerial" {} \; | awk -F '/' '{print "sd "$5}' |
>>>>>>>> tail -n1>
>>>>>>>>>>>>>>> $dispositivoArquivo
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> read dispositivo<  $dispositivoArquivo
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> dmesg | grep -e "$dispositivo.*\[.*Attached" | sed -e
>>>>>>>> 's/^.*\[//g ;
>>>>>>>>>>>>>>> s/\].*$//g' | tail -n1>  $dispositivoArquivo
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> read dispositivo<  $dispositivoArquivo
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> mount | grep -i "$dispositivo" | awk '{print $3}'>
>>>>>>>> $dispositivoArquivo
>>>>>>>>>>>>>>> read dispositivo<  $dispositivoArquivo
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> rm "$dispositivoArquivo"
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> A questão, é: O que mais vale a pena?
>>>>>>>>>>>>>>> Voltando aos primórdios da época da faculdade, lembro que IO
>>>>>>>> é sempre
>>>>>>>>>>>>>>> mais lento que processamento na memória.
>>>>>>>>>>>>>>> Mas como eu sou novo na área, realmente gostaria de saber se
>>>>>>>> o caso é
>>>>>>>>>>>>>>> válido. Pois o shell trabalha "suave" com arquivos de texto.
>>>>>>>> E seu eu
>>>>>>>>>>>>>>> jogasse esses arquivos para uma "tmpfs" ao invés do home?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Grato pela ajuda,
>>>>>>>>>>>>>>> Rodrigo Boechat
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Em 15-11-2011 09:33, MrBiTs escreveu:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> -----BEGIN PGP SIGNED MESSAGE-----
>>>>>>>>>>>>>>>> Hash: SHA256
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On 11/15/2011 01:51 AM, Rodrigo Boechat wrote:
>>>>>>>>>>>>>>>>> MrBiTs, obrigado pela ajuda!
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Estou implementando, seguindo sua dica. O problema é que,
>>>>>>>> olhando
>>>>>>>>>>>>>>>> meu script percebi que há muita subshell. Tentei, mas ainda
>>>>>>>>>>>>>>>>> não consegui enxergar uma maneira de evitá-las.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Tentei usar o esquema:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> variavel=comandos ${variavel}
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Mas não deu certo. E vom o eval eu ainda continuo no
>>>>>>>> problema de
>>>>>>>>>>>>>>>> subshell.
>>>>>>>>>>>>>>>>> Aqui o ${!variavel} sempre retorna vazio.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Existe uma maneira de melhorar a coisa?
>>>>>>>>>>>>>>>> Quando eu tenho tarefas repetitivas de geração de dados, eu
>>>>>>>>>>> geralmente
>>>>>>>>>>>>>>>> as executo uma única vez, direcionando sua saída para uma
>>>>>>>>>>>>>>>> espécie de arquivo de configuração. Posso exemplificar isso
>>>>>>>> numa
>>>>>>>>>>>>>>>> leitura de arquivos que contenham um dado de código de
>>>>> qualquer
>>>>>>>>>>>>>>>> coisa, cuja descrição está numa tabela de banco de dados.
>>>>>>>> Ao invés de
>>>>>>>>>>>>>>>> ler a tabela para cada linha, eu a leio uma única vez e jogo
>>>>>>>>>>>>>>>> sua saída num arquivo no formato chave-valor. Como o bash 4
>>>>>>>> suporta
>>>>>>>>>>>>>>>> nativamete arrays associativos, via declare -A, fica fácil
>>>>>>>>>>>>>>>> você construir a relação. A versão 3 do bash não possui isso
>>>>>>>>>>>>>>>> nativamente, então o ideal é fazer upgrade. Eu
>>>>>>>> particularmente acho
>>>>>>>>>>>>>>>> eval a praga do shell-script. Se é para usar eval e deixar
>>>>>>>> o script
>>>>>>>>>>>>>>>> ininteligível, é mais fácil partir para outra linguagem.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Não me parece, entretanto, ser o caminho, já que você vai
>>>>>>>> querer
>>>>>>>>>>>>>>>> plugar seu emepêquatlo (outro dia me falaram em MP-6, porque
>>>>>>>>>>>>>>>> tocava música, filme, tirava fotos, mostrava fotos, tinha
>>>>>>>> rádio AM-FM
>>>>>>>>>>>>>>>> e jogos, subvertendo a abreviação do formato mpeg layer 4,
>>>>>>>>>>>>>>>> usando isso para indicar quantas funções o aloz flito tinha)
>>>>> a
>>>>>>>>>>>>>>>> qualquer momento e ele poderá usar um dispositivo
>>>>>>>> diferente. Se não
>>>>>>>>>>>>>>>> fosse assim, minha recomendação seria que você gerasse um
>>>>>>>> arquivo de
>>>>>>>>>>>>>>>> parâmetros quando o computador iniciasse.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Claro que usar subshell não é crime. Tudo são ferramentas.
>>>>>>>> Numa hora,
>>>>>>>>>>>>>>>> uma subshell é ruim, como no caso que analisamos da
>>>>>>>>>>>>>>>> velocidade do script, mas tem horas que somente subshells
>> vão
>>>>>>>>>>>>> resolver.
>>>>>>>>>>>>>>>> Um trecho que me chamou a atenção foi esse:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> dmesg | grep -i "$numeroDoDispositivo" | grep -i
>>>>>>>> "$nome2MP4" | sed -e
>>>>>>>>>>>>>>>> "s/^.\{28\}\([a-z]\{3\}\).*/\1/" | tail -n1>"$dispositivo"
>>>>>>>>>>>>>>>> pontoDeMontagem=$(mount | grep -i "`cat
>>>>>>>> /home/$USER/.dispositivo`" |
>>>>>>>>>>>>>>>> sed -e "s/^.\{12\}\([0-9a-zA-Z/ -]*\) type.*/\1/")
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Primeiro você gera uma string dados do dispositivo, só para
>>>>>>>> filtrar o
>>>>>>>>>>>>>>>> mount com esse dado. Aí pensei em juntar tudo numa coisa só:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> pontoDeMontagem=$(mount | \
>>>>>>>>>>>>>>>> grep -i \
>>>>>>>>>>>>>>>> $(dmesg | \
>>>>>>>>>>>>>>>> grep -i "$numeroDoDispositivo" | \
>>>>>>>>>>>>>>>> grep -i "$nome2MP4" | \
>>>>>>>>>>>>>>>> sed -e "s/^.\{28\}\([a-z]\{3\}\).*/\1/" | \
>>>>>>>>>>>>>>>> tail -n1) | \
>>>>>>>>>>>>>>>> sed -e "s/^.\{12\}\([0-9a-zA-Z/ -]*\) type.*/\1/")
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Na minha opinião, ficou confuso demais e não reduz a
>>>>>>>> quantidade de
>>>>>>>>>>>>>>>> subshells. Separei os comandos em linhas, para termos melhor
>>>>>>>>>>>>>>>> visibilidade.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Linux tem algumas ferramentas legais para você analisar o
>>>>>>>> que está
>>>>>>>>>>>>>>>> rodando ou instalado na sua máquina. Por exemplo, você
>>>>> procura
>>>>>>>>>>>>>>>> o número do dispositivo assim:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> numeroDoDispositivo=$(dmesg | grep -i "$nome1MP4" | sed -e
>>>>>>>>>>>>>>>> "s/^.\{20\}\([0-9:]\{8\}\).*/\1/" | tail -n1)
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Entretanto, você tem os sysfs e procfs que te ajudam muito.
>>>>>>>> Veja que
>>>>>>>>>>>>>>>> legal:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> $ ls /proc/scsi/usb-storage
>>>>>>>>>>>>>>>> 6
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Esse 6 é exatamente o número do dispositivo USB que eu
>>>>>>>> tenho plugado
>>>>>>>>>>>>>>>> no meu computador agora. Obviamente, ele por sí só não diz
>>>>>>>>>>>>>>>> muita coisa, mas se for o único arquivo do diretório,
>>>>>>>> pronto, você já
>>>>>>>>>>>>>>>> eliminou um monte de subshell. Dentro do arquivo temos:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Host scsi6: usb-storage
>>>>>>>>>>>>>>>> Vendor: Kingston
>>>>>>>>>>>>>>>> Product: DT 101 G2
>>>>>>>>>>>>>>>> Serial Number: 001CC07CEB39BB41891A0087
>>>>>>>>>>>>>>>> Protocol: Transparent SCSI
>>>>>>>>>>>>>>>> Transport: Bulk
>>>>>>>>>>>>>>>> Quirks:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Então, talvez um find /proc/scsi/usb-storage -type f -exec
>>>>>>>> grep -l
>>>>>>>>>>>>>>>> $nome1MP4 {}\; seja a forma de você achar o número do
>>>>>>>>>>>>>>>> dispositivo. O arquivo /proc/scsi/scsi também te dá
>>>>> informações
>>>>>>>>>>>>>>>> interessantes, mas ainda não me diz se ele está montado.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Aí, para descobrir qual é o ponto de montagem do safado, e
>>>>>>>> aí vamos
>>>>>>>>>>> ao
>>>>>>>>>>>>>>>> dmesg. Ele sempre escreve algo como sd #Device, então se eu
>>>>>>>>>>>>>>>> filtrá-lo por sd 6, devo ter algo legal:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> dmesg | grep -e "sd 6.*\[.*$nome2MP4"
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Ele vai me retornar alguma coisa assim:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> [57713.679823] sd 6:0:0:0: [sdb] Attached SCSI removable
>> disk
>>>>>>>>>>>>>>>> Aí, como o sdb é o que queremos, talvez um dmesg | grep -e
>>>>> "sd
>>>>>>>>>>>>>>>> 6.*\[.*Attached" | sed -e 's/^.*\[//g ; s/\].*$//g' seja
>>>>> legal.
>>>>>>>>>>>>>>>> Como sabemos que todo dispositivo USB será montado em um
>>>>> device
>>>>>>>>>>>>>>>> diferente, se plugarmos o primeiro, temos /dev/sdb, se
>>>>>>>> plugarmos o
>>>>>>>>>>>>>>>> segundo, temos /dev/sdc, isso nos basta. Aí é só ver no
>> mount
>>>>>>>>>>>>>>>> mount | grep -i sdb
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> E viva.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Veja se diminui um pouco seus subshells.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - --
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> LLAP
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> .0. MrBiTs - address@hidden
>>>>>>>> <mailto:mrbits.dcf%40gmail.com><mailto:mrbits.dcf%40gmail.com>
>>>>>>>>>>>>>>>> ..0 GnuPG -
>>>>>>>>>>>>>>>>
>> http://keyserver.fug.com.br:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
>>>>>>>> <
>> http://keyserver.fug.com.br:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
>>>>>>>>>>>>>>>> <
>> http://keyserver.fug.com.br:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
>>>>>>>> <
>> http://keyserver.fug.com.br:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
>>>>>>>>>>>>>>>> 000 http://www.mrbits.com.br
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> -----BEGIN PGP SIGNATURE-----
>>>>>>>>>>>>>>>> Version: GnuPG v1.4.11 (GNU/Linux)
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>> iQEcBAEBCAAGBQJOwk4AAAoJEG7IGPwrPKWr2TEH/ilB3vvv3mDQAuoHF2H3pgsB
>>>>>>>> zsfkOtZEeSExlnsOW35XgvHgB8h7wsIY7MeDaEoMAPY3PH+1eGzCEN9H8sopEpfG
>>>>>>>> D60TisBQOi4RkHJ2HvoHJPEo/Uxl3MGvyXQst2Ds50XmlmheMY6lj9+N0Fw8PQWP
>>>>>>>> /JZ/hL83s2FyoXLd2JtA7Bt9mPAbcEWeQuUcslhw+lzLc678P0rnmV9kAoDaSs9F
>>>>>>>> v9G/8dKELwsJ+DbweBUlJVYTnfSGkQBzegHdFA5OhJ8cC6DO7kiiXAZC+n0tJUQB
>>>>>>>> yhArU6iRFR3DPE1Acpe4SBrpbci7dwtP4JNNur+ScPE/fSoNtETsJU2Pz5E1Awk=
>>>>>>>>>>>>>>>> =3AEc
>>>>>>>>>>>>>>>> -----END PGP SIGNATURE-----
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> [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
>>>>>>>> <mailto: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
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Tiago B. Peczenyj
>>>>>>>>>>>>> Linux User #405772
>>>>>>>>>>>>>
>>>>>>>>>>>>> http://pacman.blog.br
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>> [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
>>>>>>>> <mailto: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
>>>>>>>> <mailto: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]
>>>>>>
>>>>>>
>>>>> [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]
>>>>
>>>>
>>>>
>>> [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]
>>
>>
>>
>
> [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]