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: Julio C. Neves
Subject: Re: [shell-script] Re: Enviar músicas para o MP4.
Date: Mon, 6 Feb 2012 16:39:06 -0200

Rodrigo,
Já estou perdido e não estou mais entendendo nada. Me mande em pvt uns
arquivos e diga o que vc quer na saída que te mando pronto e explico a
solução. Está bem assim?

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 6 de fevereiro de 2012 16:23, Rodrigo Boechat <
address@hidden> escreveu:

> **
>
>
> Em 06-02-2012 16:10, Julio C. Neves escreveu:
>
> > Em 6 de fevereiro de 2012 10:08, Rodrigo Boechat<
> > address@hidden> escreveu:
> >
> >> **
>
> >>
> >>
> >> Caraca!!!
> >> Eu vou ter que fazer isso para minha coleção inteira?! T_T
> >>
> > Claro que não. Um loop pode fazer isso por vc.
> Sim... Mas eu pensei em usar o find. Visto que nunca o usei, mais para
> aprender...
>
> >
> >> Bom. Fiz testes com as mesmas músicas que eu usei antes.
> >>
> > Mas vc fez esse teste aplicando o tr que falei ou não?
> Usei os arquivos previamente limpos com o comando tr, indicado por você.
> E como disse, o cat -vet arquivo_limpo | head -5 não demonstrou apenas a
> primeira linha.
>
> >
> >> 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]
> >>
> >>
> >>
> >
> > [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]