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:25:20 -0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:9.0) Gecko/20111224 Thunderbird/9.0.1

Bom... De curioso fiz o cat -vet arquivo_limpo | head -5
Ele não mostrou as cinco linhas como era esperado.
A tela do terminal encheu de caracteres loucos e foi rolando, rolando, 
rolando... Até eu dar control+c.
Imagino que o comando para limpar os caracteres de controle não deram 
muito certo.
Ou eu estou fazendo besteira por aqui?

Executei a linha abaixo para criar um arquivo "limpo".
tr [:cntrl:] ~ < 03\ -\ Lost\ Not\ Forgotten.mp3 | tr -s ~ > 03\ -\ 
Lost\ Not\ Forgotten\ [limpo].mp3

Estou começando a acreditar que quanto mais tento entender, mais sei que 
nada sei...


Em 06-02-2012 10:08, Rodrigo Boechat escreveu:
> 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
>>>>>>>>>>>>>>>>> 000http://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 
>> emhttp://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]