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

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

Re: Zipando arquivo: KDE servicemenus + script + zip


From: zunixbr
Subject: Re: Zipando arquivo: KDE servicemenus + script + zip
Date: Fri, 14 May 2004 18:10:11 -0000
User-agent: eGroups-EW/0.82

"Zipar arquivos" --getsavefilename $1.zip .zip`   
if ["$nome" = ""]   
then   
exit 0   
fi  
date >>/tmp/zipsh.log  
echo '$@='"$@" >>/tmp/zipsh.log   
for infile in $@; do   
echo "zip -r $nome $(basename $infile) /dev/null 2>&1" 
>>/tmp/zipsh.log  
done;  
--------------------------------------------------
-------------------------------------------------------  
Desta vez (via terminal) o nome da pasta aparece completo na caixa 
de texto, para salvar; no filtro aparece apenas a extensão .zip, 
como deve ser. Porém nada de zipar. O Log registra:  
  
$@=guia II  
zip -r /mnt/hda7/guia IV.zip guia /dev/null 2>&1  
zip -r /mnt/hda7/guia IV.zip II /dev/null 2>&1  
==================================================
======================================================  
  
Dando continuidade, usando o método 'tentativa erro' obtive alguns 
resultados estranhos para mim:  
  
Qdo insiro a modificação proposta: echo "$@"|while read infile no 
lugar de for infile in $@, deixando o script assim;  
--------------------------------------------------
--------------------------------------------------
-------------------------------------  
!/bin/bash   
#Autor: Kevin Krammer (address@hidden)   
#Alterações por Zip Megabyte   
cd $(dirname $1)   
     
kdialog --dontagain zipinfo:zipmsg --msgbox "Você pode selecionar
um 
ou mais arquivos e/ou diretórios mantendo pressionada a tecla
ctrl, 
colocando todos num único arquivo zip. Neste caso, nome do
primeiro 
arquivo, em ordem alfabética de sua seleção, será
pré-definido na 
caixa de texto."   
   
$ cat ~/.kde/share/config/zipinfo   
[Notification Messages]   
zipmsg=false   
IFS="  
"   
nome=`kdialog --caption "Zipar arquivos" --getsavefilename 
$1.zip .zip`   
if ["$nome" = ""]   
then   
exit 0   
fi  
echo "$@"|while read infile; do   
zip -r $nome $(basename $infile) /dev/null 2>&1   
done;  
--------------------------------------------------
--------------------------------------------------
-----------------------------------  
Qdo digito no konsole:  
  
zipfiles guia II  
  
aparecem as seguintes mensagens na tela:  
  
/usr/bin/zipfiles: line 1: !/bin/bash: No such file or directory  
  
/usr/bin/zipfiles: line 8: $: command not found  
/usr/bin/zipfiles: line 9: [Notification: command not found  
/usr/bin/zipfiles: line 14: [/mnt/hda7/teste: No such file or 
directory  
        zip warning: ignoring special file: /dev/null  
  
Abre-se a tela de aviso, a tela para se salvar com apenas o nome 
guia.zip, eu mudei o nome para guia IV e o incrível é que zipou
  
  
adding: guia II/ (stored 0%)  
  adding: guia II/ch-inter.htm (deflated 68%)  
  adding: guia II/ch-x11.htm (deflated 68%)  
  adding: guia II/ch-impr.htm (deflated 67%)  
  adding: guia II/ch-kern.htm (deflated 71%)  
  adding: guia II/ch-run.htm (deflated 70%)  
  
E, ao fim, lá estava a pasta guia IV, zipada !  
  
Porém ao realizar o mesmo, mas clicando na pasta e pedindo zipar, 
via servicemenus, nada ! 
 
--- Em address@hidden, "opa" <opa@h...> escreveu 
> Ou sua mensagem veio com problemas ou o IFS não está correto.
Seu 
script só faz  
> isso, não se preocupe em registrar o OIFS; esse IFS só vale
nele. 
> IFS=" 
> " 
> É assim mesmo, termina com aspas sózinha na segunda linha.
Rode o 
script. E aí? 
> Não funcionou? Bem, então: 
>  
> Devido às circunstâncias, acho que você deve dividir a
solução do 
seu  
> problema em duas partes, ao bom estilo JE citado ontem por um 
colega. 
>  
> Primeiro, faça a sua linha: 
>  
> zip -r $nome $(basename $infile) /dev/null 2>&1 
>  
> ou como ficar depois de alterada, funcionar corretamente e, como 
você citou  
> pouca experiência, sabendo como ela pode ou não funcionar. 
Experimente,  
> ganhe firmeza antes de continuar. Isso você ensaia em um xterm. 
>  
> Depois, você ataca a formação dessa linha, ou seja, o script 
proprimente dito.  
> Considero que seria interessante você enviar a linha formada
para 
um terminal  
> ou um arquivo de log, para examinar com calma o que está
chegando, 
afinal agora  
> você já sabe o que pode/precisa chegar. 
>  
> Acho que colocar algumas linhas extras pode ajudar nos testes. 
> === 
> Antes do "for": 
> date >>/tmp/zipsh.log 
> echo '$@='"$@" >>/tmp/zipsh.log 
>  
> Alterar a linha dentro do for para, ou o que você definiu 
inicialmente (acima): 
> echo "zip -r $nome $(basename $infile) /dev/null 2>&1" 
>>/tmp/zipsh.log 
>  
> Depois do for: 
> echo >>/tmp/zipsh.log 
> === 
>  
> Ao chamar o script pode tentar em outro xterm: 
>  
> tail -f /tmp/zipsh.log 
>  
> acho que é isso, para monitorar permanentemente o que vai
surgindo 
no arquivo.  
> Procure começar com listas pequenas para facilitar a
visualização 
do problema. 
>  
> Dependendo do monitorzão que você usa, e/ou do tamanho das
suas 
janelas, não vai  
> nem precisar chavear entre janelas. Bem eu não lembro mais do
KDE, 
se usasse até  
> poderia contribuir de forma mais específica, mas imagino que
possa 
trabalhar  
> fácil e confortavelmente assim. 
>  
> Se a coisa continuar complicada pode tentar um: 
> grep "seu arquivo problema" /tmp/zipsh.log|od -b 
> só para ver o que está separando os arquivos/diretórios na
sua 
variável 
> obs.: seu IFS default é igual ao meu :) 
>  
> Talvez o problema esteja antes desse ponto, ou até na chamada do 
script, mas  
> usando esta técnica em pontos anteriores você deverá
conseguir 
isolar o  
> problema. 
>  
> Independentemente das minhas sugestões, espero que outros
colegas 
possam  
> contribuir, talvez de forma bem mais eficiente. 
>  
> Acho que posso generalizar, ficamos à disposição! :) 


reply via email to

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